J'utilise Spring android framework pour récupérer des données json via HTTP POST. Mais tout en consommant le service, les paramètres sont reçus au niveau du serveur.Récupération de données JSON via HTTP POST à l'aide de Spring Android Framework
Voici le code Android:
protected String doInBackground(String... params) {
String username = params[0];
String password = params[1];
String url = connectServices.connectLoginServiceURL();// returns url
loginServiceParam = new LinkedMultiValueMap<String, String>();
loginServiceParam.add("username", username);
loginServiceParam.add("password", password); //username and password are null at server end.
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application", "json")));
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(loginServiceParam, requestHeaders);
// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();
// Add the Gson message converters
restTemplate.getMessageConverters().add(new GsonHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
// Make the HTTP POST request, marshaling the response from JSON
ResponseEntity<LoginBean> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, LoginBean.class);
LoginBean loginBeanResponse = responseEntity.getBody();
status = loginBeanResponse.getStatus();
return status;
}
classe LoginBean suit:
public class LoginBean {
private String status;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
La réponse JSON est:
{"status":"true"}
Merci!
Arpit, c'est incorrect. Le paramètre 'true' n'a rien à voir avec les requêtes POST ou GET. Passer 'true' à une nouvelle instance RestTemplate indique d'ajouter un ensemble de convertisseurs de messages par défaut. Voir le document de référence ici: http://static.springsource.org/spring-android/docs/1.0.x/reference/htmlsingle/#d4e161 Aussi le doc API: http://static.springsource.org/spring-android /docs/1.0.x/api/org/springframework/web/client/RestTemplate.html#RestTemplate(boolean) –
Roy, merci pour l'information. Je n'ai pu traiter le POST que si 'true' est passé au RestTemplate. Sans cela, j'ai rencontré l'exception suivante: 'org.springframework.web.client.RestClientException: Impossible d'écrire la requête: pas de HttpMessageConverter trouvé pour le type de requête [org.springframework.util.LinkedMultiValueMap]' –