すでに生成したJSON文字列を使用してhttp投稿リクエストを作成する必要があります。 私は別の2種類の方法を試みた:JSONを使用したHTTP POST要求(Javaの場合)
1.HttpURLConnection
2.HttpClient
を、私はそれらの両方から同じ「不要」の結果を得ます。 HttpURLConnectionのとのこれまでの私のコードは次のとおりです。
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();
}
}
私のコード今のところのHttpClientでは、次のとおりです。
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();
}
}
生成JsonStringはこのようなものですここで、
{"description":"prova_Process","modelgroup":"","modified":"false"}
私が得る応答は:
{"response":false,"message":"Error in saving the model. A JSONObject text must begin with '{' at 1 [character 2 line 1]","ids":[]}
どうぞよろしくお願いします。
あなただけのオブジェクトに文字列を変換しようとしたことがあり途中でHTTPの送信ステップを使わずに(JSONを解析する) –
generatedJSONString.trim()を使用してみてください。 – aquaraga
は、RESTfulなWebサービスを使用するようです。 JAX-RS APIを適用することで、あなたの人生を非常に簡単にすることができます。 – Gimby