【发布时间】:2013-07-17 18:45:34
【问题描述】:
我最近在试验 java 网络,发现有点奇怪,假设你有
URL url = new URL("http://www.google.com");
URLConnection con = url.openConnection();
然后我可以调用方法,例如con.getContentLength() 等等,即使我没有调用con.connect(),它们也会给我正确的值。怎么可能?我的意思是,URLConnection 从哪里/如何获取这些标头,我还没有调用con.connect(),所以没有发送任何请求,所以当时应该没有标头可用。
【问题讨论】:
-
“所以没有发送请求”。要求进行事实核查。尝试 tcpdump、fiddler、ethereal、wireshark,尝试禁用网络。我 99% 的猜测是:它会在需要时为您连接。 (编辑:事实上,我假设
url.openConnection()打开连接 - 该方法还有什么用途) -
尝试拔掉电缆,在这种情况下我无法读取标题。提琴手什么也没显示。不知道如何使用tcpdump,将尝试wireshark。
-
不需要,真的吗?您已经确定它确实实际上建立了连接。
-
由于这种行为明显违反了文档,并且这些类在 JDK 中已经存在很长时间了,我不得不相信你正在做一些你没有在这里展示的事情。您能否创建一个简单的独立程序来演示此行为并将其放在您的帖子中?此外,Java 版本会很有用。
-
基本上,我正在做 url 连接到共享的 google doc 文件。问题是我看不到里面发生了什么,因为所有连接都通过 https
标签: java networking