2012-05-15 89 views
0

我想在使用java HttpUrlConnection类的服务器上发布数据。看来,如果我以某种方式读取服务器的响应,该帖子可以正常工作,但如果我不这样做,信息永远不会发布。java HttpUrlConnection POST:需要提交POST提交的响应提交?

在HttpUrlConnection文档中没有提及这种行为,并且我见过的所有有关HttUrlConnection的示例都要求从服务器获取响应。

我想知道如果我在我的代码中犯了一个错误,或者这是HttpUrlConnection的一个正常行为,并且如果是这样的话,那么能够更好地理解这个类的作用的人可以向我解释为什么这样?

非常感谢!

下面是代码的注释行是一个使自检工作或失败:

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()); 

回答

2

URLCOnnection类需要POST发生的完整握手。这意味着,一旦打开连接,就必须回读POST的响应以实际发生。

+0

谢谢,那就解释一下。 (由于某些原因,我无法访问该链接,但似乎该主题已移动,我将检查出...) – settef

+0

从搜索结果中选择与Oracle相关的第一个链接。不知道为什么链接直接工作。 – UVM

+0

为什么在这里?有人可以解释吗?谢谢 – UVM

0

您可以显式调用URLConnection.connect()或获取有关如HttpURLConnection.getResponseCode等,以触发HTTP响应的任何信息HTTP请求。

为了更好的理解,您应该通过How to use java.net.URLConnection to fire and handle HTTP requests这篇综合性文章。

+0

我不认为'connect()'会提交请求。尽管获得响应代码,消息或响应'InputStream'。 – erickson

+0

谢谢,您发送的链接非常有用。我尝试使用HttpURLConnection.connect()虽然它并没有改变任何东西。似乎我必须明确地访问响应(使用getResponseCode(),getInputStream()...)来开启POST ...我觉得这很奇怪。 – settef

+0

好吧,那么我想有必要访问提交POST的响应。感谢您的回答。 – settef