2014-09-02 29 views
0

我使用axis2插件调用Web服务。所使用的方法是rpc。MessageContext没有关联的SOAPFault

代码主要是:

 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) 

帮助我。

回答

0

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

也许你的情况类似。

您可以通过使用像SoapUI这样的通用Webservice客户端来验证这一点,它也可以显示原始hhtp响应。

+0

@cfrick the帖子实际上是一种回答形式 - 或者OP有问题的原因之一。我建议我们离开它。 – 2014-09-26 13:23:20

0

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