Ich muss eine GET-Anfrage mit einem Header senden: Content-Type: application/camiant-msr-v2.0+xml
. Ich erwarte eine XML-Antwort vom Server. Ich habe die Anfrage und Antwort mit Postman getestet und alles ist gut. Aber wenn ich es im Frühling mit RestTemplate
versuche, bekomme ich immer eine 400 schlechte Anfrage. Die Ausnahmen von spring
sind:Resttemplate GET Anfrage mit benutzerdefinierten Kopfzeilen
Jul 09, 2016 12:53:38 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/smp] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 400 Bad Request] with root cause
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475)
Mein Code:
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", "application/camiant-msr-v2.0+xml");
HttpEntity<?> entity = new HttpEntity<Object>(headers);
log.debug("request headers: " + entity.getHeaders());
ResponseEntity<String> response = restTemplate.exchange(queryUrl, HttpMethod.GET, entity, String.class);
Die Debug-Meldung zeigt den Header als {Content-Type=[application/camiant-msr-v2.0+xml]}
, die korrekt zu sein scheint. Ich frage mich, was ist falsch mit meiner Anfrage und wenn es eine Möglichkeit gibt, die Anfragen auf der Leitung zu debuggen zu sehen.
Wenn Sie ein GET senden, warum stellen Sie einen Header "Content-Type" zur Verfügung? Möchtest du, dass es stattdessen 'Accept' ist? –
@ nicholas.hauschild Da der Server dies erwartet, kann ich nur eine XML-Antwort erhalten, wenn ich diesen Header zur Verfügung stelle. –
@ nicholas.hauschild Ich verstehe irgendwie, was du meinst, aber die API-Spezifikation sagt das, und auch Postman funktioniert gut. –