0

我最近正在尝试使用 java 网络,我发现了一些奇怪的事情,假设你有

URL url = new URL("http://www.google.com");
URLConnection con = url.openConnection();

然后我可以调用方法,比如con.getContentLength()等等,即使我没有调用它们,它们也会给我正确的值con.connect()。这个怎么可能?我的意思是,URLConnection 从哪里/如何获取这些标头,我还没有调用con.connect(),所以没有发送任何请求,因此此时应该没有标头可用。

4

1 回答 1

0

当您调用任何需要响应的方法(例如 getContentLength()、getInputStream()、getResponseCode())时,实际的 TCP 连接会隐式发生。它不会发生在 openConnection() 中。请求在此时发送。

除非您使用其中一种流模式并且您正在对请求内容执行 PUT 或 POST,在这种情况下,当您开始编写请求时会打开连接。

于 2013-07-17T21:40:12.410 回答