【问题标题】:[Android]HttpClient post/put StringEntity length limit?[Android]HttpClient post/put StringEntity 长度限制?
【发布时间】:2011-04-28 11:30:21
【问题描述】:

我发现 HttpClient 发布/放置长 StringEntity 存在问题。当实体很短时,根本没有问题。但是,当长度超过一个值(大约 1400 个字符)时,永远无法发送 http 数据包(我使用 WireShark 嗅探了接口)。实际上是建立了连接,但是没有传输数据,所以接收端出现了超时异常。 我想知道这些是否是长度限制。 我试图增加连接超时和套接字超时,这只让我等待更长的时间才能看到超时...... 而且我也试过用InputStreamEntity,也没用。

[更新]:我尝试直接使用 HttpURLConnection 而不是 HttpClient。同样的问题仍然存在。不过,我确实有一些发现。当我强制将数据包切成块(使用 HttpURLConnection.setChunkedStreamingMode)时,WireShare 确实捕获了数据包的某些片段,而之前的片段丢失了。我想这一定是apache http库中的一个错误。

【问题讨论】:

    标签: android post httpclient put


    【解决方案1】:

    问题已解决。我花了好几天才发现,问题出在我的无线路由器上。它有一些奇怪的设置会截断大量传入的 http 消息。

    【讨论】:

    • 因此您可以接受自己的答案(将其标记为已接受)。因此,如果其他人提出这个问题,他会立即看到正确答案!
    【解决方案2】:

    它可能在服务器端超时。还要确保您使用的是 org.apache.client.httpclient jar。官方没有 url 的最大长度。看这里http://www.w3.org/Protocols/rfc2616/rfc2616.html

    【讨论】:

    • 在服务器端,我也增加了tomcat的连接超时和socket超时。它没有用。正如我在问题中提到的,我使用 WireShark 来嗅探 http 数据包。没有数据包被截获。连接已建立,但不知何故,数据没有传输到服务器。
    • 查看您的代码会有所帮助,但这里有一个我知道有效的 http 客户端的链接。 lukencode.com/2010/04/27/…
    • 尝试使用上面链接中给出的代码,遇到了同样的问题。
    • 您使用的是什么类型的服务器?
    【解决方案3】:

    我认为这可以帮助你urllength

    【讨论】:

    • 其实我的问题在于payload,而不是url。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 2020-10-15
    • 2016-11-25
    • 2013-02-15
    • 1970-01-01
    相关资源
    最近更新 更多