Axis 1.4 - 更改为使用HTTP / 1.1

时间:2015-09-17 09:16:10

标签: http axis

我有一个客户端尝试使用Axis 1.4连接到服务器。 Axis Call使用默认HTTP / 1.0,但我需要1.1版。我将属性添加到我的类中实现Axis Stub的Call实例。我使用的方法创建Call,设置属性然后调用调用。

call.setProperty(MessageContext.HTTP_TRANSPORT_VERSION, HTTPConstants.HEADER_PROTOCOL_V11);

call.invoke(..)

我还尝试将属性设置为Stub:

super._setProperty(MessageContext.HTTP_TRANSPORT_VERSION, HTTPConstants.HEADER_PROTOCOL_V11);

但是我可以看到POST请求仍然包含HTTP / 1.0。有没有其他方法可以强制使用HTTP / 1.1?

在HTTPSender中,正在从MessageContext设置此属性,我不知道如何更改它。

2 个答案:

答案 0 :(得分:3)

您可以设置call-requestheader的属性。

Hashtable httpSettings = new Hashtable();
httpSettings.put(MessageContext.HTTP_TRANSPORT_VERSION, HTTPConstants.HEADER_PROTOCOL_V11);
_call.setProperty(HTTPConstants.REQUEST_HEADERS, httpSettings);

答案 1 :(得分:0)

最佳解决方案是使用使用 Apache CommonsHTTPSender 进行传输的 EngineConfiguration 创建 Axis 服务。

SimpleProvider config = new SimpleProvider();
Handler sender = new CommonsHTTPSender();
Handler transport = new SimpleTargetedChain(sender);
config.deployTransport(org.apache.axis.transport.http.HTTPTransport.DEFAULT_TRANSPORT_NAME, transport);
service = new Service(config);