我必须使用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的连接是否正常。如果没有此功能,其余功能将无效。
那么我怎么能让这个功能工作呢?
我必须自己定义类GetMCNStatusRequest
和GetMCNStatusResponse
以及我必须在类中定义什么?我可以在wsdl文件中找到答案吗?
答案 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"