2014-03-03 30 views
0

建立http连接时我有点困惑。我想知道服务器的数据在代码中的哪个位置已经完成了在电话,客户端上的下载?HttpGet和DefaultHttpClient实时循环,在哪一步从服务器检索所有数据?

我有下面的代码,标准HTTP的Java连接代码:

DefaultHttpClient client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(url); 
     try { 
      HttpResponse execute = client.execute(httpGet); 
      InputStream content = execute.getEntity().getContent(); 

      BufferedReader buffer = new BufferedReader(new InputStreamReader(content)); 
      String s = ""; 
      while ((s = buffer.readLine()) != null) { 
      response += s; 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 

所以这个问题是实际发生在:

HttpResponse execute = client.execute(httpGet); 
InputStream content = execute.getEntity().getContent(); 

都是在这个地方下载的服务器数据或可否发生这样的情况:服务器的数据仍在到达区块

while ((s = buffer.readLine()) != null) { 
    response += s; 
} 

我的理解是,连接仍然活着:

while ((s = buffer.readLine()) != null) { 
    response += s; 
} 

并且在读取套接字时会出现更多数据。我知道这一点,因为我一直在使用该流来处理出价数据,例如电影,绘制大型路线或应该显示为来的内容。一旦.execute()被称为执行

回答

0

请求,即后:

HttpResponse execute = client.execute(httpGet); 

的响应是在存储器中在该点之后。是的,连接仍然存在,但在连接管理器关闭连接之前不会发出任何请求。

在你的while循环中,你只是将响应转换为没有连接相关操作的字符串。