为什么在HTTP客户端中需要InputStream?(JAVA)

Dex*_*ter 2 java inputstream apache-httpclient-4.x

我一直在使用java中的各种HTTP客户端从网站获取各种信息或使用Web服务(如谷歌地图地理编码器)

我正在使用的当前客户端是Apache 的HTTP Components客户端.

我一直想知道为什么没有.getText()或.getBytes()方法只是简单地给我网址的所有内容,而是有返回InputStream的方法.这是什么意思或原因?

这不像我一直与服务器通信,所以我将不得不继续检查流.HTTP是无状态的,那么为什么没有getText()/ getBytes()方法只是在收到HTTP响应的内容(如String或byte [])之后返回?

Boz*_*zho 6

因为服务器开始在流中输出结果,并且客户端以这种方式获取结果.您可以在内存中缓冲该流并将其转换为String/ byte[],但您也可以处理它的一部分,并将其丢弃.

  • 是的,但是当我得到响应对象时,数据已被接收并且连接已关闭 - 对吗? (2认同)
  • 并不真地。HttpClient 从底层连接流式传输数据,该连接至少在响应实体主体被完全消耗之前保持打开状态 (2认同)