Запрос веб-сервиса: несоответствующее количество параметров - PullRequest
1 голос
/ 03 апреля 2012

Я пишу потребителю веб-сервиса, используя JAX-WS. Я использовал инструмент wsimport для генерации кода из файлов WSDL.

В этом веб-сервисе у меня 4 операции, 1 из которых работает. Эта операция запрашивает только параметр, и она работает правильно

MyOperationARequest request = new MyOperationARequest(); 
request.setSomeData("1");

MyOperationAResponse response = serviceA.MyOperationA(request);

Это работает как брелок, и я могу проанализировать ответ и получить от него данные.

Проблема возникает при использовании трех других операций, все они запрашивают два параметра вместо одного.

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 запрашивает у меня два из них (которые, кстати, даже не относятся к одному и тому же типу объекта) .

Любое предложение будет высоко ценится.

Спасибо заранее.

...