c++ - 使用复杂类型输入的 WSDLPull

标签 c++ wsdlpull

我正在尝试使用 wsdlpull 调用 Web 服务方法,它非常简单,直到我找到一个接受复杂类型数组参数的服务方法,在这种情况下,它需要 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;
}

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

这样说,我觉得gSOAP2Microsoft Windows Web Services API是更好的原生替代品。

关于c++ - 使用复杂类型输入的 WSDLPull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802743/

相关文章:

c++ - 删除了默认构造函数。仍然可以创建对象...有时

c++ - 在动态内存分配后将整数传递给构造函数

c++ - iOS OpenAL Sound 不是定位的

c++ - 如何打开 .a 文件

c++ - C++ 结构中的动态内存分配