0

建立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;
}

并且在读取套接字时可以获取更多数据。我知道这一点,因为我一直在使用流来处理出价数据,比如电影、绘制大路线或应该在即将到来时显示的东西。

4

1 回答 1

0

请求被执行一次.execute()被调用,即之后:

HttpResponse execute = client.execute(httpGet);

此后,响应在内存中。是的,连接仍然存在,但在连接管理器关闭连接之前不会执行任何请求。

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

于 2014-03-03T17:33:02.877 回答