我最近在试验java网络,我觉得有点奇怪,假设你有
URL url = new URL("http://www.google.com");
URLConnection con = url.openConnection();
然后我可以调用方法,比如con.getContentLength()
等等,他们会给我正确的值,即使我没有调用con.connect()
。怎么可能?我的意思是,URLConnection来自/如何获取这些标题,我还没有调用con.connect()
,所以没有发送请求,所以当时没有标题可用。
答案 0 :(得分:0)
当您调用任何需要响应的方法时,实际的TCP连接会发生,例如getContentLength(),getInputStream(),getResponseCode()。它不会发生在openConnection()。该请求将在此时发送。
除非您正在使用其中一种流模式,而您正在使用请求内容进行PUT或POST,在这种情况下,当您开始编写请求时会打开连接。