首页 > 解决方案 > SOAP WSDL 格式化 (THTTPRIO)

问题描述

我正在使用一个 SOAP Web 服务,它在某些标签中需要文本“:com”。例如,而不是

<soapenv:Envelope >
    <soapenv:Body>
        <RunSimpleTrip>
            <c>
                <CompanyCode>CompanyCode</CompanyCode>
                <Password>Password</Password>
                <Username>Username</Username>
            </c>
            <BasicTrip>
                <Comments />
                <Driver>Some Driver</Driver>
                <EndOdometer />
                ...
            </BasicTrip>
        </RunSimpleTrip>
    </soapenv:Body>
</soapenv:Envelope>

它需要是

<soapenv:Envelope >
    <soapenv:Body>
        <RunSimpleTrip>
            <c>
                <com:CompanyCode>CompanyCode</com:CompanyCode>
                <com:Password>Password</com:Password>
                <com:Username>Username</com:Username>
            </c>
            <BasicTrip>
                <com:Comments />
                <com:Driver>Some Driver</com:Driver>
                <com:EndOdometer />
                ...
            </BasicTrip>
        </RunSimpleTrip>
    </soapenv:Body>
</soapenv:Envelope>

请注意并非所有标签都需要前缀(如 c 或 BasicTrip 标签)。只是内在的,对象的领域。

我是否坚持在每个单独的标签上执行 StringReplace,还是缺少一个选项?是否有某种方法可以切换导入器或 WSDL .pas 文件以自行执行此操作?

这是同一个问题,当时没有得到很好的答案Delphi HttpRio SOAPHTTPClient 没有为命名空间变量添加前缀。就像问题一样,当我通过soapUI 生成它时,它会将“:com”放在所需的标签上。

编辑:这是描述 BasicTrip 的 WSDL 片段

<xs:complexType name="BaseTrip">
<xs:sequence>
<xs:element name="Comments" nillable="true" type="xs:string"/>
<xs:element name="Driver" nillable="true" type="xs:string"/>
<xs:element name="EndOdometer" type="xs:decimal"/>
<xs:element name="GetMapPoints" type="xs:boolean"/>
...
</xs:sequence>
</xs:complexType>

标签: delphidelphi-10-seattle

解决方案


推荐阅读