MessageContext没有关联的SOAPFault

时间:2014-09-02 12:50:10

标签: web-services axis2 xml-rpc

我用axis2插件调用web服务。使用的方法是rpc。

代码主要是:

       GetPayIDBillIDStub stub = new GetPayIDBillIDStub("http://80.91.4.113:8088/services/GetPayIDBillID_Proxy");
        stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, Boolean.FALSE);
        GetPayIDBillIDStub.PaymentInput input = new GetPayIDBillIDStub.PaymentInput();
        input.setPassword("123456");
        input.setTelephone(2111111111);
        input.setUsername("test");
        paymentTelOPR.setPaymentTelOPRRequest(input);
        org.apache.axiom.om.OMFactory factory = org.apache.axiom.om.OMAbstractFactory.getOMFactory();
     paymentTelOPRResponseE = stub.paymentTelOPR(paymentTelOPRE.setPaymentTelOPRRequest(paymentTelOPR.getOMElement(GetPayIDBillIDStub.PaymentTelOPR.MY_QNAME, factory)));

错误是:

Exception in thread "main" java.lang.IllegalArgumentException: The MessageContext does not have an associated SOAPFault.
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:556)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at mypackage.GetPayIDBillIDStub.paymentTelOPR(GetPayIDBillIDStub.java:182)
at Run.main(Run.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

帮助我。

2 个答案:

答案 0 :(得分:0)

我们最近遇到了这个问题,因为响应不包含SOAPFault(实际上是服务调用的预期答案),但响应的http状态代码是5xx(在我们的例子中是500)。

在你的情况下也许类似的东西。

您可以使用SoapUI等通用Web服务客户端验证这一点,该客户端也可以显示原始hhtp响应。

答案 1 :(得分:0)

我知道这是一个迟到的答案,但我可以用我的经验帮助新工程师。 我在使用带有API的SOAP UI时遇到了同样的错误。当我通过故障响应替换我的模拟响应时,问题就开始了。但是,一旦我重新尝试使用正确的代码,它就没有用,它给了我这个错误。 解决方案是:我必须删除响应,因为它被视为故障响应并且错过了错误代码,当我创建新响应并删除旧响应时,它没有得到此异常