2010-07-30 113 views
0

我需要澄清一下,以瞭解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

回答

0

事實證明,我能夠使用wsdl.exe工具生成代理類,方法是1)用「include」語句替換「import」語句,2)將第一個和第二個xsd文件合併到一個文件/命名空間。感謝所有的輸入。

+0

您還應該嘗試不編輯該文件,而是在命令行上傳遞所有文件路徑:'wsdl.exe main.wsdl sub.wsdl main.xsd sub.xsd' – 2010-07-31 17:14:52