我正在尝试使用以下代码调用Axis2 Web服务:
stub = new MyServiceStub("http://server/app/services/MyService");
stub.ping();
使用codegen生成存根/骨架。我可以正确地与来自其他客户端的Web服务进行交互(即使是使用SAAJ编写的低级别的内容),也可以不是来自愚蠢的存根调用。
我收到以下错误:
org.apache.axis2.AxisFault: Transport error: 501 Error: Not Implemented
at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:298)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:192)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:327)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:206)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at my.package.stub.MyServiceStub.ping(MyServiceStub.java:266)
是否有人遇到此问题并知道解决方案?
我需要以某种方式配置Stub来调用Web服务(我确定这是一个配置问题)。 Web服务已经部署并运行了一段时间。
谢谢!
答案 0 :(得分:2)
我刚刚使用following article的详细信息解决了这个问题。
我所做的只是在通话前添加以下代码:
stub._getServiceClient().getOptions()
.setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10);
感谢您的时间!
答案 1 :(得分:2)
是的,我已经尝试过没有Axis 2,只能使用javax.xml.soap.SOAPConnection并且已经成功了:
connection.setRequestProperty(HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10);