RestTemplate: Wie URL und Abfrageparameter zusammen gesendet werden
Ich versuche mich zu übergeben param Pfad und query-Parameter in einer URL, aber ich erhalte eine seltsame Fehlermeldung. unten ist der code
String url = "http://test.com/Services/rest/{id}/Identifier"
Map<String, String> params = new HashMap<String, String>();
params.put("id", "1234");
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url)
.queryParam("name", "myName");
String uriBuilder = builder.build().encode().toUriString();
restTemplate.exchange(uriBuilder , HttpMethod.PUT, requestEntity,
class_p, params);
und meine url ist immer http://test.com/Services/rest/%7Bid%7D/Identifier?name=myName
was soll ich tun, damit es funktioniert. Ich erwarte http://test.com/Services/rest/{id}/Identifier?name=myName
so dass params hinzufügen-id an die url
bitte vorschlagen. vielen Dank im Voraus
InformationsquelleAutor der Frage Shiva | 2016-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde
buildAndExpand
ausUriComponentsBuilder
passieren alle Arten von URI-Parameter.Beispiel:
InformationsquelleAutor der Antwort Michal Foksa
Ein Problem mit der Antwort von Michal Foksa ist, dass es fügt die query-Parameter zuerst, und dann erweitert die path-Variablen. Wenn die Abfrage parameter enthält Klammern, z.B.
{foobar}
dies zu einer Ausnahme führen.Der sichere Weg ist die Erweiterung der path-Variablen zuerst, und dann fügen Sie die Abfrage-Parameter:
InformationsquelleAutor der Antwort holmis83