HttpGet 和 DefaultHttpClient 实时循环,在哪一步从服务器检索所有数据



我在建立http连接时有点困惑。我想知道来自服务器的数据在代码的哪个位置完成了在手机、客户端上的下载?

我有以下代码,标准的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 块

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

我的理解是,这种联系仍然存在于:

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

套接字时可以提供更多数据。我知道这一点,因为我一直在使用流来处理出价数据,例如电影、绘制大路线或应该显示的内容。

一旦调用.execute()请求,即在以下之后执行请求:

HttpResponse execute = client.execute(httpGet);

在此点之后,响应将位于内存中。是的,连接仍处于活动状态,但在连接管理器关闭连接之前不会执行任何请求。

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

相关内容

  • 没有找到相关文章

最新更新