Я пытаюсь вызвать метод веб-службы с помощью wsdlpull, и это довольно просто, пока я не получу один метод службы, который принимает параметр, который является массивом сложных типов, в этом случае он принимает 1 параметр, который является неограниченным числом типов, содержащих 2 члена — массив пар имя / значение.
<s:complexType name="SendDetails">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Detail" type="tns:Detail"/>
</s:sequence>
</s:complexType>
<s:complexType name="Detail">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string"/>
</s:sequence>
</s:complexType>
и я не имею ни малейшего понятия, как установить их в качестве параметров для wsdlpull.
У кого-нибудь есть пример кода или фрагмент кода, чтобы начать работу, прежде чем я переписываю с помощью другого инструмента?
Кажется, что WsdlInvoker
не имеет поддержки для этого (пока?). setValue
звонки setInputValue
который в свою очередь вызывает validate
, но этот метод останавливает обработку при обнаружении сложного типа:
const XSDType * pType = sParser_->getType(typeId);
if (pType && !pType->isSimple()){
return 0;
}
Единственный сложный тип, который, кажется, поддерживается, это тот, который содержит простую модель содержимого.
Это сказал, я думаю, gSOAP2 а также API веб-служб Microsoft Windows лучше родные альтернативы.