Напишите клиент Python для передачи аргумента xs: anyType методу веб-сервиса в Java - PullRequest
0 голосов
/ 21 марта 2011

Я написал небольшой веб-сервис [Axis2 / Java], который предоставляет метод


   public String Fill(String cacheName Object... varArgs) {


      return "Sample return "+varArgs[0].toString()+" "+(new Integer(varArgs[1]));

   }

Мой клиент - клиент python suds.



import suds;
import suds.client;
url="http://localhost:8989/pakg1/services/JavaCache?wsdl"
client=suds.client.Client(url)
print client.service.Fill("level1,"Immediate",123123);


WSDL показывает, что элемент varArgs выглядит следующим образом.


   xs:element maxOccurs="unbounded" minOccurs="0" name="varArgs" nillable="true" type="xs:anyType"

Однако в массиве Object во время выполнения ничего не появляется. Когда я пытаюсь посмотреть массив в режиме отладки, он показывает, что он нулевой.

Посоветуйте, пожалуйста, как передать аргументы методу Fill, чтобы я мог отправить массив или один базовый тип в параметре varArgs.

Спасибо, Dhawal.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2011

Проблема на стороне axis2.Axis2 не может десериализовать Object и ошибочно принимает его за DataHandler.Я решил передать свой Объект как OMElement и затем десериализовать себя.

Сообщил также о проблеме с Axis2.

Спасибо

0 голосов
/ 21 марта 2011

Вы пытались передать свои varArgs в виде списка Python? Посмотрите, работает ли что-то подобное:

client.service.Fill("level1",["Immediate",123123])
...