【问题标题】:HTTP SOAP payload EncodingHTTP SOAP 有效负载编码
【发布时间】:2012-03-16 15:14:22
【问题描述】:
POST http://xxx/test HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
User-Agent: Jakarta Commons-HttpClient/3.1
Host: xxx:1041
Content-Length: 1911

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prop="http://...">
   <soapenv:Header>
    .....
   </soapenv:Header>
   <soapenv:Body>
      .....
   </soapenv:Body>
</soapenv:Envelope>

当我通过 SOAP UI 查看时,我看到 Accept-Encoding 是 gzip,deflate。 这意味着 SOAP 有效负载在通过 http 发送之前被压缩?并在服务器端解压缩为 HTTP 协议的一部分?

谢谢

【问题讨论】:

    标签: java http soap soapui


    【解决方案1】:

    Accept-Encoding 是一个请求标头,在您的特定情况下意味着该方只能接受压缩内容。反过来,响应标头Content-Encoding 显示消息是否真的被压缩了。

    【讨论】:

      【解决方案2】:

      Accept-Encoding 是一个 http 标头,它定义了客户端将接受作为响应的编码。这并不意味着请求是使用这些值中的任何一个进行编码的,只是服务器可以用它们来响应。

      更多详情见Hypertext Transfer Protocol -- HTTP/1.1 (RFC 2616 Section 14.3)

      【讨论】:

        【解决方案3】:

        Accept-Encoding 表示发送请求的客户端可以接受定义为此参数值的编码响应。

        对于 Gzip 请求,您必须设置 Content-Encoding: gzip parameter。您可以使用 SOAPUI 之类的 SOAP 客户端进行测试。

        使用 SOAP UI 发送 Gzipped 请求。

        点击File --&gt; Preferences

        默认情况下会选择 HTTP 设置选项卡。您会注意到分块阈值选项。默认情况下,此项设置为空,以便对任何 HTTP 请求禁用分块。

        使用非负整数值(例如:- 1)更新此字段并重新提交您的请求。您会注意到如下所示的编码请求。

        POST http://<.....>n HTTP/1.1
        Content-Encoding: gzip
        Accept-Encoding: gzip,deflate
        Content-Type: text/xml;charset=UTF-8
        SOAPAction: ""
        Content-Length: 206
        Host: amazona-bs4anhc:4400
        Connection: Keep-Alive
        User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
        

        【讨论】:

          猜你喜欢
          • 2017-06-11
          • 1970-01-01
          • 1970-01-01
          • 2013-08-21
          • 1970-01-01
          • 2018-09-17
          • 1970-01-01
          • 2015-02-12
          • 1970-01-01
          相关资源
          最近更新 更多