delphi - 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>
解决方案
推荐阅读
- php - 为什么我在 Laravel 5.5.43 中收到“找不到类 'App\Providers\Form'”错误?
- c# - 如何比较(pictureBox1.Image 与 Properties.Resources.bug1)?
- android - 如何查看应用程序支持的方案?
- java - 如何在模型映射器转换器中保留异常消息
- reactjs - 如何在 Amazon Cloudfront 的 React 应用程序中提供静态博客
- c# - AnalysisContext.EnableConcurrentExecution() - 它到底是做什么的?
- directx-12 - 在 DX12 中,多个 ExecuteCommandLists 调用提供哪些订购保证?
- r - 是否可以按设备类型自动对用户代理进行分类?
- java - 如何通过正则表达式从字符串上的多个相同字符中找到一个字符
- angular - 用于字段验证的 ANTLR4 语法