我正在使用JAX-WS编写Web服务使用者。我使用了wsimport工具来从WSDL文件生成代码。
在这个网络服务中,我有4个操作,其中1个有效。此操作仅询问参数,并且正常工作
MyOperationARequest request = new MyOperationARequest();
request.setSomeData("1");
MyOperationAResponse response = serviceA.MyOperationA(request);
这就像魅力一样,我能够解析响应并从中获取数据。
使用其他3个操作时会出现问题,所有这些操作都需要两个参数而不是一个。
MyOperationBRequest request = new MyOperationBRequest();
request.setSomeData("1");
MyOperationBResponse response = serviceB.MyOperationB(request1, request2);
这会引发以下错误:
javax.xml.ws.soap.SOAPFaultException: javax.xml.ws.WebServiceException: java.lang.RuntimeException: Mismatched parameter count:expecting 1 items, but got 0 instead.
at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(Unknown Source)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(Unknown Source)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)
at $Proxy34.myOperation(Unknown Source)
...
我一直在搜索很多,我发现了一些像这样的问题,尽管它们都是PHP,而不是Java。在这个例子中,人们鼓励创建一个数组,并把两个参数放在那里,但我相信这不是一个选项,因为myOperationB方法问我两个参数(顺便说一下,它们甚至不是同一个对象类型)
任何建议都将不胜感激。
先谢谢。