SOAP请求名称空间问题

问题描述:

我需要澄清一下,以了解SOAP请求对于.Net 3.5 ASMX Web服务的要求。这是一个示例请求:SOAP请求名称空间问题

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dp="http://www.datapower.com/schemas/management"> 
<soapenv:Body> 
<spml:addRequest requestID="string" executionMode="synchronous" xmlns:spml="spmlnamespace"> 
    <spml:psoID ID="23099469" targetID="string" /> 
    <spml:data> 
     <spml:attr name='groupId'> 
     <spml:value>111111</spml:value> 
     </spml:attr> 
     <spml:attr name='mdn'> 
     <spml:value>5555555555</spml:value> 
     </spml:attr> 
     <spml:attr name='serviceId'> 
     <spml:value>SDCAT1</spml:value> 
     </spml:attr> 
    </spml:data> 
</spml:addRequest> 
</soapenv:Body> 
</soapenv:Envelope> 

这是否意味着我的asmx web服务方法应该命名为“addRequest”?这是否也意味着此方法应该有两个参数,第一个是类型“psoID”,第二个是类型“data”,如spml命名空间中定义的那样?

+0

您是否试图对WSDL进行逆向工程? – 2010-07-30 19:33:16

+0

是的,基本上。有一个WSDL提供给我,但我无法使用wsdl.exe生成代理类,因为如果复杂类型包含一系列复杂类型,该工具会导致它失败。 – 2010-07-30 19:39:20

+1

你确定它是WSDL.exe中的一个错误,而不是一个垃圾WSDL,你会得到什么错误?也许你应该更好地发布wsdl.exe的wsdl部分,或许我们可以找出问题所在。 – 2010-07-30 19:45:52

事实证明,我能够使用wsdl.exe工具生成代理类,方法是1)用“include”语句替换“import”语句,2)将第一个和第二个xsd文件合并到一个文件/命名空间。感谢所有的输入。

+0

您还应该尝试不编辑该文件,而是在命令行上传递所有文件路径:'wsdl.exe main.wsdl sub.wsdl main.xsd sub.xsd' – 2010-07-31 17:14:52