1

例如,我有下面的java代码:

URL u = new URL("http://google.com");  
URLConnection c = u.openConnection();  
InputStream s = c.getInputStream();  
int i;  
while ((i = s.read()) != -1) {  
     //do something here  
}  

而且我不明白,在哪个时刻(在哪个方法调用之后)java将实际请求发送到服务器?

4

3 回答 3

6

URL 类的 openConnection() 方法只返回一个新的HttpUrlConnection实例(因为你的协议是 http)。实际连接不会发生,直到您调用 getInputStream() 或 getOutputStream() 方法。正是在调用这些方法时,调用了 connect() 并且谷歌服务器接收了连接。由于协议是http,服务器会返回你正在使用s.read() 阅读的google 主页。(它应该给你谷歌主页的html页面)

于 2012-06-18T17:44:34.990 回答
2

它发生在openConnection()方法期间。您可以通过阅读其文档来了解这一点

每次调用此 URL 的协议处理程序的 openConnection 方法都会打开一个新连接。

于 2012-06-18T17:46:33.277 回答
1

当您调用openConnection它时,它实际上是在尝试使用指定的 url 创建连接,如果失败则抛出IOException.

openConnection - 每次通过调用此 URL 的协议处理程序的 openConnection 方法来打开新连接。

于 2012-06-18T17:47:41.977 回答