我正在尝试使用java HttpUrlConnection类在服务器上发布数据。似乎如果我以某种方式阅读服务器的响应,帖子工作正常,但如果我不这样做,信息永远不会发布。
在HttpUrlConnection文档中没有提到这种行为,我见过的所有HttUrlConnection示例都要求服务器做出响应。
我想知道我是否在我的代码中犯了错误,或者这是否是HttpUrlConnection的正常行为,如果是这样的话,那么能够更好地理解这个类如何工作的人会向我解释为什么会这样?< / p>
非常感谢!
以下是代码,注释行是使POST工作或失败的行:
URL url=new URL("myUrl");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
connection.setRequestProperty("Host", "myHost");
connection.setDoOutput(true);
os.write(staffToPost.getBytes("utf-8"));
os.flush();
os.close();
//System.out.println(connection.getResponseCode()+" "+connection.getResponseMessage());
答案 0 :(得分:2)
URLCOnnection
类需要完全握手才能发生POST。这意味着,一旦打开连接,就必须回读POST实际发生的响应。
答案 1 :(得分:0)
您可以显式调用URLConnection.connect()或获取有关HTTP响应的任何信息,例如HttpURLConnection.getResponseCode等,以触发HTTP请求。
您应该在How to use java.net.URLConnection to fire and handle HTTP requests上阅读这篇全面的帖子,以便更好地理解。