envoyer des données json par le biais d'un appel post en utilisant le repos du modèle à partir du printemps
Je reçois un message d'erreur disant que ce n'est pas valide les données json et reçois l'erreur 400. Je ne pense pas que la mise en œuvre que j'ai est mise en forme des données correctement.
Objectif: essayer de faire un post appel à l'aide du reste du modèle, en passant par les données JSON comme le corps. Il semble que lors de la conversion de la carte de données json, il n'est pas correctement converti en json.
public void GetJsonData(String name, String city) {
Map<String, String> map = new HashMap<String, String>();
map.put("api_key", apikey);
map.put("venue_queries", "[{'name':'"+name+"', 'location': {'locality': '"+city+"'}}]");
try {
String resp = GlobalHelper.calltestService(RestServicesUrl, map);
System.out.println(resp);
} catch (Exception e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
public String calltestService(String url, Map<String, String> data) throws Exception {
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
ResponseEntity<String> response = new ResponseEntity<String>(headers, HttpStatus.OK);
rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Gson gson = new Gson();
System.out.println(gson.toJson(data));
try {
response = rest.postForEntity(url, gson.toJson(data), String.class);
System.out.println(response.getBody());
System.out.println(response.getHeaders());
return response.getBody();
} catch (Exception e) {
e.printStackTrace();
System.out.println("error in post entity");
return "error";
}
}
Vous devez vous connecter pour publier un commentaire.
Droit, votre JSON n'est pas valide
vous JSON n'est pas valide car GSON échappe les caractères HTML par défaut et de mettre les guillemets simples comme l'équivalent unicode char de code U+0027
si vous désactivez le Gson HTMLEscaping
vous obtiendrez
de toute façon, votre JSON est toujours incorrecte.
Vous devez fixer votre
venue_queries
les principaux éléments de contenu int la carteusing double quotes
"
alors obtenue au format JSON sera valable
Tes extrait de