Androidドキュメントに示されているように、setDoOutPut(true);
を設定して接続がPOST
として送信されるようにしました。しかし、デバッガでHTTPURLConnection
メソッドメンバをチェックすると、setDoOutput(true)、さらにsetRequestMethod("POST")
の後であっても、常にGET
になります。何とかそれをGET
にリセットしていますか?HttpURLConnectionメソッドは常にGETですか?
URL url = new URL(serverAddr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod(verb);
urlConnection.setFixedLengthStreamingMode(postBody.getBytes().length);
//urlConnection.setRequestProperty("Content-Length", postBody.getBytes().toString());
urlConnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
urlConnection.connect();
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
out.write(postBody.getBytes());
out.flush();
int responseCode = urlConnection.getResponseCode();
System.out.println("HTTPS RESPONSE CODE: " + responseCode);
out.close();
EDITは:これはバグに持っている...デバッガが、私はこれをtrueに設定していても、明らかに偽setDoOuputメンバ変数を示しています。それは設定されていません!
'verb'は何ですか?実際にPOSTではなくGETリクエストが行われていることを確認しましたか? – dylan7
動詞が値 "POST"で渡されています。これをどのように確認できますか?応答コードは400を返していますが、それが悪いGET要求か悪いPOST要求かどうかはわかりません。 – ShrimpCrackers
次のURL URL =新しいURL(アドレス)を試してください。 urlConnection =(HttpURLConnection)url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setRequestProperty( "Content-Type"、...); OutputStream outputStream =新しいBufferedOutputStream(URLConnection.getOutputStream()); BufferedWriter writer =新しいBufferedWriter(新しいOutputStreamWriter(出力ストリーム、 "utf-8")); writer.write(requestBody); writer.flush(); writer.close(); outputStream.close(); ' – BNK