【问题标题】:gsoap does not generate C++ proxy classesgsoap 不生成 C++ 代理类
【发布时间】:2013-10-21 21:17:32
【问题描述】:

我已经从 XML Web 服务的一组示例请求文件生成了一个 XSD(使用 Xmplify - 但我怀疑这很重要)。

当我通过 gsoap 运行它时,我没有收到任何错误或警告,但即使在 soapcpp2 上使用 -i 或 -j 选项,我也没有生成任何 C++ 代理文件(例如 soapProxy.h)。

仅生成以下文件:

ns1.nsmap   
request.h
soapC.cpp
soapH.h
soapStub.h

使用的命令:

wsdl2h request.xsd 
soapcpp2 -i -C -I/usr/local/share/gsoap/import request.h

我认为生成这些 XSD 需要一些特定的东西?

如何获取生成的代理文件?我知道我可以在没有代理对象的情况下使用,但它看起来更乱!

架构文档包含在下面。

感谢您的建议!

菲尔。

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault='unqualified'>
    <xs:element name='REQUEST'>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref='USERTOKEN'/>
                <xs:element ref='ACTION'/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name='USERTOKEN'>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref='USERKEY'/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name='USERKEY' type='xs:NCName'/>
    <xs:element name='ACTION'>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs='0' ref='PARAMETER'/>
            </xs:sequence>
            <xs:attribute name='NAME' use='required' type='xs:NCName'/>
        </xs:complexType>
    </xs:element>
    <xs:element name='PARAMETER'>
        <xs:complexType mixed='true'>
            <xs:attribute name='NAME' use='required' type='xs:NCName'/>
        </xs:complexType>
    </xs:element>
</xs:schema>

【问题讨论】:

    标签: c++ gsoap


    【解决方案1】:

    wsdl2h 工具不会为 XSD 文件生成代理和服务代码,因为这些文件中没有定义任何操作(仅在 WSDL 中)。您可以为 XSD 根元素使用 gSOAP 生成的(反)序列化程序来发送/接收从 C++ 数据类型(反)序列化的 XML 数据。例如

    #include "ns1.nsmap" // ns1 namespaces etc
    struct soap *ctx = soap_new();
    ns1__REQUEST r;
    r.soap_default(ctx); // reset content
    r.USERTOKEN = … // set r's content as needed
    ctx.os = … // set the output stream
    soap_write_ns1__REQUEST(ctx, &r); // serialize REQUEST
    

    您可以通过流、套接字等发送/接收数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 2013-11-03
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多