【问题标题】:Apache HttpClient UrlEncodedFormEntity limit sizeApache HttpClient UrlEncodedFormEntity 限制大小
【发布时间】:2011-12-20 20:46:38
【问题描述】:

我正在使用 Apache HttpClient 与 WS 连接。一切正常,但当应用程序尝试发送大尺寸的帖子时,它会中断。

我正在像这样取消 HttpClint:

  • 将 XML 发布到 REST WS
  • 这篇文章是一个字符串,字符串是一个映射为 XML 的对象。
  • 我正在使用 UrlEncodedFormEntity 将 xml 参数传递给 url

HttpClient发送contetn时,从WS端,带XML的参数为空。 我检查了发送 xml 的时间并且没问题,我的意思是 XML 已正确创建。

如果 xml 的大小较小,则可以正常工作。 它的行为就像 HttpClient 对 post 有限制大小或 UrlEncodedFormEntity 有。

有什么想法吗? 谢谢。

【问题讨论】:

    标签: java apache httpclient tomcat6


    【解决方案1】:

    如果您要发布 XML 文件,则不应使用 UrlEncodedFormEntity,而应将 FileEntity 与 XML 文件一起使用。这样可以避免 UrlEncodedFormEntity 限制。

    【讨论】:

    • 实际上我正在创建一个带有 XML 结构的字符串,但不是文件本身,但我可以将它作为文件发送以避免这个问题。我会尝试这种方式。谢谢
    • 如果你已经有了 String,你可以使用 StringEntity 而不是 FileEntity。
    【解决方案2】:

    UrlEncodedFormEntity 不会对内容长度施加 any 限制,但许多 HTTP 服务器实际上会这样做,因为 'application/x-www-form-urlencoded' 内容通常会在服务器端。

    【讨论】:

    • 好的,谢谢您的信息。我将 HTTP Server 配置为无限制,但无论如何,问题仍然存在。
    【解决方案3】:

    感谢您的帮助,解决方案很简单:限制在 Tomcat 中,因为默认情况下 maxPostSize 参数为 2MB(我的意思是如果它不存在于 server.xml 中的连接器标记中),所以我将其更改为15MB。我找到了带有 HTTP 协议的标签连接器,并为 !5Mb 添加了属性 maxPortSize="15728640" ,它工作正常!!!

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多