Frühjahr RestRemplate postforobject mit request-parameter integer-Wert
Habe ich eine Methode, die in Frühlings-rest-Dienst.
@RequestMapping(value = "test/process", method = RequestMethod.POST)
public @ResponseBody MyResponse processRequest(String RequestId, int count)
Bin ich mit Spring RestTemplate um den Dienst wie dieser.
RestTemplate restTemplate = this.getRestTemplate();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("RequestId", RequestId);
map.add("count", count);
restTemplate.postForObject(url, map,MyResponse.class);
Wenn ich versuche, rufen Sie die client-Methode bekomme ich die exception, dass nicht geeignet HttpMessageConverter gefunden für Anfrage type [java.lang.Integer]
org.springframework.http.converter.HttpMessageNotWritableException: Could not write request: no suitable HttpMessageConverter found for request type [java.lang.Integer]
at org.springframework.http.converter.FormHttpMessageConverter.writePart(FormHttpMessageConverter.java:310)
at org.springframework.http.converter.FormHttpMessageConverter.writeParts(FormHttpMessageConverter.java:270)
at org.springframework.http.converter.FormHttpMessageConverter.writeMultipart(FormHttpMessageConverter.java:260)
at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:200)
at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:1)
at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:596)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:444)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:409)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:287)
Ich weiß, dass einer der Wege ist vorbei, alle Parameter als String. Aber ich könnte es brauchen, um passieren, komplexe Datentypen als Parameter später.
Was ist der Wege, dies zu erreichen.
Ich habe gegoogelt und einige option zu sein scheinen, Schreibe meine eigenen Konverter. Wie soll ich anfangen über eine Lösung dieses Problems.
In der folgenden Zeile: map.add("Anforderungs-id", die Anforderungs-id); Anforderungs-id ist ein Objekt komplexer als eine Zeichenfolge? Können wir die URL sehen? Danke!
Anforderungs-id ist zurzeit nur ein string aber ich könnte post müssen eine benutzerdefinierte Datentypen oder ein date-Objekt, das in anderen Methoden
Anforderungs-id ist zurzeit nur ein string aber ich könnte post müssen eine benutzerdefinierte Datentypen oder ein date-Objekt, das in anderen Methoden
InformationsquelleAutor d123 | 2013-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Ursache dieses Fehlers ist, dass durch die Angabe einer
Integer
imLinkedMultiValueMap
, dieRestTemplate
nehmen, um zu bedeuten, daß Ihr Antrag ist ein multipart-request. Es gibt keineHttpMessageConverter
standardmäßig registriert und kann mit dem schreiben von Werten vom TypInteger
auf eine Anfrage Körper.Als Sie sagte, Sie kann mit der situation umgehen, durch ändern der
count
eineString
. Nachdem alle, es gibt keineInteger
type im HTTP-request-Parameter. Jedoch, Sie waren besorgtDavon aus, dass etwas wie dieses
mit
Den folgenden gut funktionieren wird
Denken Sie daran, dass der request-Parameter werden verwendet, um die Felder aufzufüllen, Modell-Attribute durch Ihren Namen.
Eine noch bessere Lösung hätten Sie mit einem standard-Serialisierung wie JSON oder XML.
Nein, ich meine, anstatt das versenden von Anfrage-Parameter, sollten Sie senden, JSON und XML. Spring unterstützt den Typen, die mit
@RequestBody
- annotation-handler-Parameter der Methode.InformationsquelleAutor Sotirios Delimanolis