我在访问第三方提供的网络服务时遇到问题。看看Axis2线路跟踪,我可以看到 \ r \ n3ff8 \ r \ n 在我回来的XML标签中间,这会导致Axis2在尝试解析它们时出现异议。
据我所知,这与HTTP 1.1分块有关,而Axis2的处理效果并不理想。
我遇到的问题与this forum post
中的问题相同如何更改我的Web服务代码以使其使用HTTP 1.0来避免分块问题?据我所知,Axis默认为CommonsHTTPSender所以我不确定为什么上面链接的论坛帖子建议改为那个。
或者有更好的方法来解决这个问题吗?
答案 0 :(得分: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参数以禁用分块。
答案 1 :(得分:0)
了解如何操作,获取您将用于调用服务的存根对象,并在其后添加以下代码:
stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION,
org.apache.axis2.transport.http.HTTPConstants.HEADER_PROTOCOL_10);