如果我创建一个HTTP java.net.URL
,然后调用openConnection()
,它是否意味着会发生一个HTTP帖子?我知道openStream()
意味着一个GET。如果是这样,您如何执行其他HTTP动词之一,而无需使用原始套接字层?新的URL(...)。openConnection()是否意味着POST?
10
A
回答
16
如果使用openConnection()
检索URLConnection
对象,它实际上并未开始与服务器通信。直到你从URLConnection()
得到流,这才会发生。当您第一次获得连接时,您可以在实际打开连接之前添加/更改标题和其他连接属性。
URLConnection的生命周期有点奇怪。它不会将头部发送到服务器,直到您获得其中一个流。如果你只是得到输入流,那么我相信它会做GET,发送头文件,然后让你读取输出。如果你得到了输出流,那么我相信它将它作为POST发送,因为它假定你将向它写入数据(你可能需要调用setDoOutput(true)
使输出流工作)。一旦你得到输入流,输出流就关闭,并等待服务器的响应。
例如,这应该做一个POST:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream os = conn.getOutputStream();
os.write("Hi there!");
os.close();
InputStream is = conn.getInputStream();
// read stuff here
虽然这会做一个GET:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);
InputStream is = conn.getInputStream();
// read stuff here
URLConnection
还会做其他奇怪的事情。如果服务器指定了内容长度,那么URLConnection
将保持底层输入流处于打开状态,直到它收到那么多的数据,即使您明确关闭它。这给我们带来了很多问题,因为它会让我们的客户端变得更加困难,因为URLConnection
会使网络连接保持打开状态。这可能可能存在,即使你只是使用getStream()
。
3
不,它不。但是如果URL的协议是HTTP,那么您将得到一个HttpURLConnection
作为返回对象。该类使用setRequestMethod
方法来指定要使用的HTTP方法。
如果你想做更复杂的东西,你可能最好使用像Jakarta HttpClient这样的库。
相关问题
- 1. '!'是否意味着perl?
- 2. $是什么?是否意味着在Ruby?
- 3. 是什么;是否意味着在Ruby?
- 4. ILOnly = 0是否意味着C++/CLI?
- 5. << - 是否意味着红宝石?
- 6. 这是否意味着数据步骤?
- 7. “仅限邀请”是否意味着beta?
- 8. @OneToOne是否意味着唯一性?
- 9. 正斜杠(/)是否意味着目录?
- 10. ASP.NET是否意味着ASP.NET WebForms?
- 11. %是什么〜DP0意味着
- 12. 这是&意味着什么?
- 13. %,这意味着
- 14. 更多的意见是否意味着ViewGroup的性能更差?
- 15. 的Java + =意味着
- 16. 这个SOAP Fault是否意味着我认为的意思?
- 17. 新的调试密钥库是否意味着新的Map API密钥?
- 18. 声明意味着
- 19. 差异意味着
- 20. 如果A == B,这是否意味着[A isEqual:B]是真的?
- 21. 什么是的StatusCode意味着“0”
- 22. 是什么语境意味着Android的
- 23. 是什么?在Android的XML意味着
- 24. 在AngularJS中结尾意味着什么double意味着
- 25. 计算意味着处理NaN意味着
- 26. SoundCloiud API中的“公共”过滤器意味着什么,它是否意味着“可流式传输”?
- 27. ADO.NET实体框架中的持久性无知是否意味着我认为这意味着什么?
- 28. 的ViewController = _ViewController意味着
- 29. typedef的变化意味着
- 30. 什么?意味着iOS的