JavaHTTPPOST-奇怪的流行为
我在使用java编写HTTP post时遇到了一个奇怪的流行为。发生的事情如下:JavaHTTPPOST-奇怪的流行为,java,http,networking,post,Java,Http,Networking,Post,我在使用java编写HTTP post时遇到了一个奇怪的流行为。发生的事情如下: Func() { String data = “MyMessage” URL url = new URL("http://edsall:8080"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWr
Func() {
String data = “MyMessage”
URL url = new URL("http://edsall:8080");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
wr.write(data);
wr.flush();
// Get the response
String line;
while ((line = rd.readLine()) != null) {
}
wr.close();
rd.close();
}
Request recvd by the server:
POST / HTTP/1.1
User-Agent: Java/1.6.0_20
Host: edsall:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 0
请注意,内容长度始终为0。起初,我不知道问题出在哪里。最后,以下代码的重新安排起到了作用:
Func() {
…
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
…
}
我不能清楚地理解这一点。打开输入流的句柄如何影响输出流 打开输入流(或查询状态)“提交”请求,即请求被发送到服务器
我不确定您写入输出流的数据发生了什么情况(如果它没有实际发送,我希望会出现异常),但调用getInputStream()
时会发送内容长度头(长度为零)
在访问响应的任何部分之前,必须发送整个请求。这是正常的URLConnection
行为。打开输入流(或查询状态)“提交”请求,即将请求发送到服务器
我不确定您写入输出流的数据发生了什么情况(如果它没有实际发送,我希望会出现异常),但调用getInputStream()
时会发送内容长度头(长度为零)
在访问响应的任何部分之前,必须发送整个请求。这是正常的URLConnection行为。移除刷新并将wr.close()放置到位。移除刷新并将wr.close()放置到位