我有一个客户端尝试使用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设置此属性,我不知道如何更改它。
答案 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);