getInputStream 字符限制

问题描述

我使用下面的代码从 HttpsURLConnection 请求正文中读取。我遇到的问题是下面代码中的 sResponseString 变量仅限于 1000 个字符。有没有办法增加或绕过这个限制?

    ```
    BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    String sInputLine = "";             
    while ((sInputLine = in.readLine()) != null){
        sResponseString += sInputLine;
    }
    ```

解决方法

您的客户端代码(如图所示)、HTTP/HTTPS 协议或底层 TCP/IP 传输都没有对响应的大小施加约 1000 个字符的限制。

(HTTP 和 TCP/IP 没有技术限制。由于您将结果组装为堆中的字符串,因此存在技术/实际限制。例如,Java String最多可以是 2^31 - 1 个字符。但这与您的问题无关...)

因此,如果某些内容限制了响应大小,则将是您的代码正在与之通信的远程服务器或代理。因此,没有通用的解决方案。您的方法应该是:

  • 检查您正在讨论的 Web API 的文档,看看它是否提供了问题的原因并提供了解决方案。

  • 如果没有,请联系提供 API 的人员并寻求他们的帮助。


有没有办法增加或绕过这个限制?

除非你知道是什么原因造成的;看上面。也可能根本没有。


检查您当前获得的约 1000 个字符中的内容也是值得的。这可能是某种“错误”响应,而不是您期望的内容,可以解释为什么它比您期望的要小。