2

我在访问第三方提供的 Web 服务时遇到问题。查看 Axis2 线路跟踪,我可以在我的 XML 标记返回的中间看到\r\n3ff8\r\n,这导致 Axis2 在尝试解析它们时出现嘶嘶声。

据我所知,这与 Axis2 处理不好的 HTTP 1.1 分块有关。

我遇到的问题与此论坛帖子中的问题相同

如何更改我的 web 服务代码以使其使用 HTTP 1.0 以避免分块问题?据我所知,Axis 默认默认为 CommonsHTTPSender,所以我不确定为什么上面链接的论坛帖子建议更改为。

或者有没有更好的方法来解决这个问题?

4

2 回答 2

2

可以直接关闭分块:

stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false);

如果您愿意,还可以通过axis2.xml 配置文件控制这两个东西。找到以下部分:

<transportSender name="http"
    class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
    <parameter name="PROTOCOL">HTTP/1.1</parameter>
    <parameter name="Transfer-Encoding">chunked</parameter>
</transportSender>

您可以将 PROTOCOL 参数更改为“HTTP/1.0”,或删除 Transfer-Encoding 参数以禁用分块。

于 2012-01-31T18:07:43.487 回答
0

了解如何执行此操作,获取将用于调用服务的存根对象并在其后添加以下代码:

stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION,
                org.apache.axis2.transport.http.HTTPConstants.HEADER_PROTOCOL_10);
于 2012-01-27T14:06:49.923 回答