2016-08-01 53 views
2

我正在嘗試使用Visual Studio使用.NET Web應用程序的SOAP。如何使用使用.xsd模式作爲參數的SOAP Webservice?

我的問題是,如果我的wsdl只描述兩種方法; 'processMessage'和'processOCIMessage'。他們期望的消息是一個適合30個xsd模式之一的字符串,消耗API的最佳方式是什麼?

例如,如果我想獲得一些用戶信息。我需要寫一個適合該模式的字符串:

<xs:complexType name="UserGetRequest19"> 
    <xs:annotation> 
     <xs:documentation> 
     Request to get the user information. The response is either 
     UserGetResponse19 or ErrorResponse. 
     </xs:documentation> 
    </xs:annotation> 
    <xs:complexContent> 
     <xs:extension base="core:OCIRequest"> 
     <xs:sequence> 
      <xs:element name="userId" type="UserId"/> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 

我知道如何在簡單的參數傳遞作爲answer to this question描述。但我該如何與Schemas做到這一點?

Visual Studio中是否有工具將這些工具變成用戶友好的C#類/模型?或者我需要手動輸入XML字符串,轉義特殊字符並將其作爲參數傳遞給'processMessage'?

回答

1

首先,使用內置工具從WSDL開始添加Visual Studio Web引用。這應該創建您的客戶端代理和數據傳輸類;你最終會以processMessageReturn作爲字符串獲得一個類,而另一個類的屬性爲processOCIMessageReturn,也可以作爲字符串。

接下來,使用/c開關運行您感興趣的XSD,並通過xsd.exe開關生成您的類。

從那裏開始,你將需要編寫代碼來實例化和填充你在第二步創建的類。使用XmlSerializer將「頂級」類序列化爲字符串,然後將該字符串分配給第一步中提到的屬性。您不必擔心將XML編碼爲文本節點,因爲這將由內置於框架中的XML序列化程序處理。