2015-04-22 34 views
4

我想调用一个使用wsdlpull的web服务方法,它很简单,直到我得到一个服务方法,接受一个参数是一个复杂类型的数组,在这种情况下,它需要1个参数这是包含2个成员的无限数量的类型 - 一个名称/值对的数组。使用复杂类型输入的WSDLPull

<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。

有没有人有例子代码或片段让我开始之前我重写使用不同的工具?

回答

1

看起来WsdlInvoker不支持这个(还?)。 setValue调用setInputValue后者又调用validate,但检测的复杂类型时该方法停止处理:

const XSDType * pType = sParser_->getType(typeId); 
if (pType && !pType->isSimple()){ 
    return 0; 
} 

唯一复杂类型,这似乎是支持是一个包含一个简单的内容模型。

这就是说,我认为gSOAP2Microsoft Windows Web Services API是更好的本地替代品。

+0

仅供参考WWS是更好的工具。完美地与WCF Soap服务进行交互。 – gbjbaanb