397 Stimmen

Spring RestTemplate GET mit Parametern

Ich muss eine REST Aufruf, der benutzerdefinierte Kopfzeilen und Abfrageparameter enthält. Ich setze meine HttpEntity mit nur den Kopfzeilen (ohne Körper), und ich verwende die RestTemplate.exchange() Methode wie folgt:

HttpHeaders headers = new HttpHeaders();
headers.set("Accept", "application/json");

Map<String, String> params = new HashMap<String, String>();
params.put("msisdn", msisdn);
params.put("email", email);
params.put("clientVersion", clientVersion);
params.put("clientType", clientType);
params.put("issuerName", issuerName);
params.put("applicationName", applicationName);

HttpEntity entity = new HttpEntity(headers);

HttpEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class, params);

Dies schlägt auf der Client-Seite mit der dispatcher servlet nicht in der Lage ist, die Anfrage an einen Handler weiterzuleiten. Nach der Fehlersuche sieht es so aus, als ob die Anfrageparameter nicht gesendet werden.

Wenn ich einen Austausch mit einem POST mit einem Request Body und ohne Query-Parameter funktioniert es einwandfrei.

Hat jemand eine Idee?

3voto

Neeraj Gahlawat Punkte 1213
public static void main(String[] args) {
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.set("Accept", MediaType.APPLICATION_JSON_VALUE);
         final String url = "https://host:port/contract/{code}";
         Map<String, String> params = new HashMap<String, String>();
         params.put("code", "123456");
         HttpEntity<?> httpEntity  = new HttpEntity<>(httpHeaders); 
         RestTemplate restTemplate  = new RestTemplate();
         restTemplate.exchange(url, HttpMethod.GET, httpEntity,String.class, params);
    }

3voto

abhinav kumar Punkte 1082

Ich biete einen Code-Schnipsel der RestTemplate GET-Methode mit Pfad-Param Beispiel

public ResponseEntity<String> getName(int id) {
    final String url = "http://localhost:8080/springrestexample/employee/name?id={id}";
    Map<String, String> params = new HashMap<String, String>();
    params.put("id", id);
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity request = new HttpEntity(headers);
    ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, String.class, params);
    return response;
}

2voto

Sie können folgenden Code für String verwenden.

URL_EXAMPLE="http://{domain}/Index.php?Username={user}&password={password}";

String domain = "example.com";
String user = "user";
String password = "password";

String data=this.restTemplate.getForObject(URL_EXAMPLE,String.class,domain,user,password);

1voto

unknown Punkte 350

Wenn Ihre Url lautet http://localhost:8080/context path?msisdn={msisdn}&email={email}

dann

Map<String,Object> queryParams=new HashMap<>();
queryParams.put("msisdn",your value)
queryParams.put("email",your value)

funktioniert für die von Ihnen beschriebene Resttemplate-Austauschmethode

0voto

saba Punkte 219

Hallo, ich baue eine URL mit Abfrageparametern mit diesem Code:

UriComponentsBuilder.fromHttpUrl(url)
                .queryParam("bikerPhoneNumber", "phoneNumberString")
                .toUriString();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X