カスタム ポートで JSON オブジェクトをサーバーに送信しようとしています。ただし、サーバーからの応答はありません。エラーは文字列エンティティにある可能性があると思いますが、それが何であるかわかりません。
私はこれらの他の問題を見てきました:
ライブラリを使用せずにJavaで正しいエンティティを使用してhttpポストリクエストを作成するにはどうすればよいですか?
AndroidのデータをJSON形式でサーバーにPOSTする方法は?
それらのどれも私の問題を解決していません。「Java で JSON を使用した HTTP POST」の解決策 (16 票) を試していますが、うまくいきません。
これが私のコードです:
public void reset() {
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
System.out.println("Start");
jsonURL = "http://x.x.x.x:3994";
HttpPost request = new HttpPost(jsonURL);
StringEntity params = new StringEntity("{\"id\":1,\"method\":\"object.deleteAll\",\"params\":[\"subscriber\"]}");
request.addHeader("Content-Type", "application/json");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
System.out.println("End");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
httpClient.getConnectionManager().shutdown();
}
}
コンソールは開始時に「開始」を出力しますが、「終了」からの出力も例外からのスタックトレースも取得しません。デバッグ中、デバッガーは " httpClient.execute(request)
" 行で停止し、続行しません。
端末からこのコマンドを実行すると:
echo '{"id":1, "method":"object.deleteAll", "params":["subscriber"]} ' | nc x.x.x.x 3994
すべてが適切に実行され、リクエストがサーバーによって受信されます。
私の問題はおそらくにあると思いますが、StringEntity
よくわかりません。
編集:
Wireshark を使用して、サーバーに送信されるこのパケットをキャプチャできました。
POST / HTTP/1.1 Content-Type: application/json Content-Length: 60
Host: x.x.x.x:3994 Connection: Keep-Alive User-Agent:
Apache-HttpClient/4.2.1 (java 1.5)
{"id":1,"method":"object.deleteAll","params":["subscriber"]}
そして、サーバーから戻ってくるこのパケット:
{"id":null,"error":{"code":-32700,"message":"Unexpected character ('P' (code 80)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')"}}
{"id":null,"error":{"code":-32700,"message":"Unexpected character ('c' (code 99)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')"}}
{"id":null,"error":{"code":-32700,"message":"Unexpected character ('C' (code 67)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')"}}
{"id":null,"error":{"code":-32700,"message":"Unexpected character ('C' (code 67)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')"}}
{"id":null,"error":{"code":-32700,"message":"Unexpected character ('H' (code 72)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')"}}
{"id":null,"error":{"code":-32700,"message":"Unexpected character ('C' (code 67)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')"}}
{"id":null,"error":{"code":-32700,"message":"Unexpected character ('U' (code 85)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')"}}
{"id":null,"error":{"code":-32700,"message":"Line must contain a JSON object"}}