RestTemplate.postForObject - Erreur: org.springframework.web.client.HttpClientErrorException: 400 Bad Request
Je suis en train de consommer un service de cette façon:
import java.util.ArrayList;
import java.util.List;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
public class StatesAPI {
private RestTemplate restTemplate;
private String apiEndpoint = "http://service/Geo.svc/getsomethingJson?format=json";
public static void main(String[] args) {
StatesAPI s = new StatesAPI();
s.foo("CA");
}
public void foo(String state) {
String requestBody = "{\"statename\":\"" + state + "\"}";
String apiResponse = getRestTemplate().postForObject(apiEndpoint,
requestBody, String.class);
System.out.println(apiResponse);
}
public RestTemplate getRestTemplate() {
//TODO: Fix the RestTemplate to be a singleton instance.
restTemplate = (this.restTemplate == null) ? new RestTemplate()
: restTemplate;
HttpMessageConverter<?> formHttpMessageConverter = new FormHttpMessageConverter();
HttpMessageConverter<?> stringHttpMessageConverternew = new StringHttpMessageConverter();
List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
converters.add(formHttpMessageConverter);
converters.add(stringHttpMessageConverternew);
restTemplate.setMessageConverters(converters);
return restTemplate;
}
public void setRestTemplate(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
}
mais quand je le lance j'ai ce message d'erreur:
09/10/2013 10:10:32 AM org.springframework.web.client.RestTemplate handleResponseError
ADVERTENCIA: POST request for "[here the link in the code]" resulted in 400 (Bad Request); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:76)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:279)
at StatesAPI.foo(StatesAPI.java:20)
at StatesAPI.main(StatesAPI.java:15)
Pouvez-vous nous montrer votre API REST pour cette demande?
Je suis consommant un tiers de l'API
Et ce n'est que l'API attendre dans la demande que vous faites. Vous n'êtes pas l'envoi de ce qu'elle attend.
J'ai tester l'API avec un peu de REPOS Client et fonctionnait bien. J'obtiens cette erreur quand j'essaie de le tester dans l'application java.
Quelle est la version de printemps utilisez-vous? Aussi Avez-vous l'essayer sans l'ajout de convertisseurs de RestTemplate? La dernière version de printemps resttemplate a défaut de convertisseurs qui sont assez
Je suis consommant un tiers de l'API
Et ce n'est que l'API attendre dans la demande que vous faites. Vous n'êtes pas l'envoi de ce qu'elle attend.
J'ai tester l'API avec un peu de REPOS Client et fonctionnait bien. J'obtiens cette erreur quand j'essaie de le tester dans l'application java.
Quelle est la version de printemps utilisez-vous? Aussi Avez-vous l'essayer sans l'ajout de convertisseurs de RestTemplate? La dernière version de printemps resttemplate a défaut de convertisseurs qui sont assez
OriginalL'auteur Angelo Gabriel Escudero Vía | 2013-10-09
Vous devez vous connecter pour publier un commentaire.
Essayez ces modifications à votre getRestTemplate:
OriginalL'auteur TrueCoke
Je pense qu'il vous manque des en-têtes et le bon corps de la requête. Essayez ceci,
J'ai ajouté un type de contenu. Pouvez-vous essayer à nouveau?
OriginalL'auteur nilesh