根据Android文档,我已经设置了
setDoOutPut(true);
以便连接作为POST
发送。然而,在调试程序时,当我检查HTTPURLConnection
方法成员时,它总是GET
,即使在设置了setDoOutput(true)
和setRequestMethod("POST")
之后。我是否不小心将其重置为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();
编辑:这一定是一个 Bug……调试器清楚地显示 setDoOutput 成员变量为 false,即使我将其设置为 true。它没有被设置!
URL url = new URL(address); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setRequestProperty("Content-Type", ...); OutputStream outputStream = new BufferedOutputStream(urlConnection.getOutputStream()); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8")); writer.write(requestBody); writer.flush(); writer.close(); outputStream.close();
- BNK