在delphi XE3中导入wsdl文件

时间:2013-12-30 20:03:16

标签: delphi wsdl delphi-xe3

我必须使用SOAP来处理Web服务。

WSDL文件为http://www.healthconnect.be/sites/default/files/support/ConsultMyCareNet.wsdl

然而,当我在我的项目(Delphi XE3)中使用file-new - other - WSDL导入器导入此WSDL文件时,存在一些错误,

在新的* .pas文件的顶部,我发现:

  

WSDL文档中提到的以下类型未被表示   在这个文件中。它们是代表其他类型的别名[@]或被引用   但从未在文件中声明[!]。后一类的类型   通常映射到预定义/已知的XML或Embarcadero类型;然而,他们也可以   指示未能声明或导入架构类型的错误WSDL文档。*

// !:GetMCNStatusRequest - "urn:be:healthconnect:rrnconnector:ws:1_0:messages"
// !:GetMCNStatusResponse - "urn:be:healthconnect:rrnconnector:ws:1_0:messages"**

因此无法编译以下用于解决Web服务的重要且必要的功能 信息:

Cannot unwrap:
 - Input part does not refer to an element
 - Output part does not refer to an element*
function getMCNStatus(const parameters: GetMCNStatusRequest): GetMCNStatusResponse; stdcall;

但我需要这个函数'getMCNStatus'因为它是第一个调用的函数,因为这个函数测试与webservice的连接是否正常。如果没有此功能,其余功能将无效。

那么我怎么能让这个功能工作呢?

我必须自己定义类GetMCNStatusRequestGetMCNStatusResponse以及我必须在类中定义什么?我可以在wsdl文件中找到答案吗?

1 个答案:

答案 0 :(得分:0)

打开你的wsdl文件。 删除类型标记中的以下行。

   <xs:import namespace="urn:be:healthconnect:rrnconnector:ws:1_0:person"     schemaLocation="person-1-0.xsd" /> 
   <xs:import namespace="urn:be:healthconnect:rrnconnector:ws:1_0:common" schemaLocation="common-1-0.xsd" /> 
   <xs:import namespace="urn:be:healthconnect:rrnconnector:ws:1_0:messages" schemaLocation="messages-1-0.xsd" /> 

现在,您在导入wsdl时不会收到任何错误。 更新:原因

为什么会这样? 您正在导入这些名称空间,而不是在wsdl文件中定义元素类型,这些名称空间定义了xsd文件,如person-1-0.xsd或common-1-0.xsd,这些文件无法访问。这些名称空间应该像

"http://healthconnect/example"