Cal*_*ngh 5 delphi attributes soap wsdl
我是Web服务的新手,但对Delphi来说并不陌生.
我正在使用"WSDL Importer"向导将WSDL文件导入Delphi 2010.WSDL文件包含一些Delphi完全忽略的"attributeGroup"标签,这可能是一个bug,虽然我还没有在Quality Central上找到这个问题的条目,只在这里和这里的论坛中提到.
我的问题有几个部分:
更新
根据我的经验和这个问题的答案,我决定使用C#控制台应用程序进行包装路由,该应用程序使用JSON输入数据并输出JSON应答数据.Delphi应用程序驱动C#应用程序.整个事物的SOAP部分现在毫不费力,并且在C#.NET中"正常工作",其余功能由Delphi很好地处理.我会向其他有类似问题的人推荐这条路线.我确实尝试将C#SOAP程序集导出为COM库,并从Delphi连接到它,但它变得非常复杂,因为我的特定应用程序中的SOAP规范很大而且有点复杂.
好吧,这花了一段时间。
根据这篇文章,在导入 wsdl 文件时,.NET wsdl.exe 工具无法识别某些标签。根据MSDN:
属性组:忽略。DataContractSerializer 不支持使用 xs:group、xs:attributeGroup 和 xs:attribute。这些声明作为 xs:schema 的子项将被忽略,但不能从complexType 或其他受支持的构造中引用。
MSDN 博客之一也描述了这种行为(尽管以一种非常难以理解的方式)。在我的具体情况下,导致问题的 wsdl 文件的特定部分如下所示:
<xs:complexType name="PhonesType">
<xs:annotation>
<xs:documentation xml:lang="en">Provides detailed phone information.</ xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Phone">
<xs:annotation>
<xs:documentation xml:lang="en">Used to pass detailed phone information.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attributeGroup ref="TelephoneInfoGroup"/>
<xs:attributeGroup ref="ID_OptionalGroup">
<xs:annotation>
<xs:documentation xml:lang="en">The ID attribute in this group is a unique identifying value assigned by the creating system and may be used to reference a primary-key value within a database or in a particular implementation.</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
.NET wsdl.exe 工具似乎<xs:attributeGroup ref="TelephoneInfoGroup"/>忽略了 ,就像 Delphi wsdl 导入程序忽略了它一样。在这种情况下,Delphi 和 .NET 中的导入都失败,wsdl 文件可能需要更改,这意味着我最终必须使用我自制的 python ref-flattener。
| 归档时间: |
|
| 查看次数: |
1494 次 |
| 最近记录: |