HTTP-POST-Requests mit JSON-String in JAVA
Ich einen http Post-Anforderung mit einer JSON-Zeichenfolge, die ich bereits generiert haben.
Ich habe versucht, verschiedene zwei verschiedene Methoden :
1.HttpURLConnection
2.HttpClient
aber ich bekomme die gleichen "unerwünschten" Ergebnis aus den beiden.
Mein code bisher mit HttpURLConnection ist:
public static void SaveWorkflow() throws IOException {
URL url = null;
url = new URL(myURLgoeshere);
HttpURLConnection urlConn = null;
urlConn = (HttpURLConnection) url.openConnection();
urlConn.setDoInput (true);
urlConn.setDoOutput (true);
urlConn.setRequestMethod("POST");
urlConn.setRequestProperty("Content-Type", "application/json");
urlConn.connect();
DataOutputStream output = null;
DataInputStream input = null;
output = new DataOutputStream(urlConn.getOutputStream());
/*Construct the POST data.*/
String content = generatedJSONString;
/* Send the request data.*/
output.writeBytes(content);
output.flush();
output.close();
/* Get response data.*/
String response = null;
input = new DataInputStream (urlConn.getInputStream());
while (null != ((response = input.readLine()))) {
System.out.println(response);
input.close ();
}
}
Mein code bisher mit HttpClient ist:
public static void SaveWorkflow() {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(myUrlgoeshere);
StringEntity input = new StringEntity(generatedJSONString);
input.setContentType("application/json;charset=UTF-8");
postRequest.setEntity(input);
input.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
postRequest.setHeader("Accept", "application/json");
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
while ((output = br.readLine()) != null) {
System.out.println(output);
}
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Wo generiert JsonString ist wie folgt:
{"description":"prova_Process","modelgroup":"","modified":"false"}
Die Antwort, die ich bekommen ist:
{"response":false,"message":"Error in saving the model. A JSONObject text must begin with '{' at 1 [character 2 line 1]","ids":[]}
Jede Idee bitte?
- Haben Sie versucht, nur konvertieren der Zeichenfolge in ein Objekt (das Parsen von JSON) ohne die HTTP-übertragung Schritt in der Mitte?
- Versuchen Sie es mit generatedJSONString.trim()
- sieht aus wie Sie verwenden möchten ein RESTful webservice; möchten Sie vielleicht, um Ihnen das Leben sehr einfach, indem die JAX-RS-API.
- In der Tat ich zum ersten generieren des json als Objekt und konvertieren es te string ...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Endlich habe ich es geschafft, die Lösung zu meinem problem ...
Einen anderen Weg dies zu erreichen ist, wie unten gezeigt: