senden Sie json-Daten über einen post Aufruf durch die Verwendung von rest-Vorlage vom Frühjahr
Ich bekomme immer eine Fehlermeldung, dass dies kein gültiges json-Daten und bekomme immer den Fehler 400. Ich glaube nicht, dass die Implementierung, die ich habe, ist die Formatierung richtig.
Ziel: versucht zu machen, einen post Aufruf über eine rest-Vorlage durch übergabe im JSON-Daten als der Körper. Es scheint, dass bei der Umwandlung von Karte, um json-Daten, es ist nicht richtig konvertiert 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";
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rechten, Ihre daraus resultierende JSON ist nicht gültig
du JSON ist nicht gültig, weil GSON entweicht die HTML-Zeichen standardmäßig angezeigt wird, und legen Sie die einfachen Anführungszeichen, da die entsprechenden unicode-char-code U+0027
wenn Sie deaktivieren Sie die Gson HTMLEscaping
erhalten Sie
sowieso, Ihre JSON ist immer noch falsch.
Müssen Sie fixieren Sie Ihre
venue_queries
wichtigen content-int die Karteusing double quotes
"
dann Ihre resultierende JSON gültig
Tes snippet