getInputStream(),getContent(),getHeaderField()等方法在没有打开连接的情况下会自己调用connect()方法,所以用户很少自己调用connect();
你发现用Socket连接到HTTP服务器的时候,总是得先给它发送一个正规的HTTP请求,它才有反应;而URLConnection一旦得到一个InputStream()就好了,数据已经到了,
这说明URLConnection和浏览器一样贱!
getInputStream()得到的一个输入流里只有数据部分,没有什么头啊首部之类的;
但是我们可以用别的方法来获得
读首部
Public String getContentType()
Public String getContentLength() 我们可以用这样的办法下载文本文件:
Int c;
While((c=in.read())!=-1)
…….
理论上虽然也可以用同样的办法下载二进制文件,但是因为HTTP服务器总不会总是在用户需要的时候就关闭连接并且发送一个 EOF字符到用户,因此,用户并不知道什么时候读操作结束;更可靠的办法是用getContentLength()先找到文件的长度,然后读出length个字节;
比如这样读: