反序列化 SOAP 响应 C#
本文关键字:响应 SOAP 反序列化 | 更新日期: 2023-09-27 18:30:49
我从服务中得到一个肥皂响应:
<SOAP-ENV:Body>
<ns1:getCurrencyListResponse>
<getCurrencyListReturn SOAP-ENC:arrayType="ns2:Map[2]" xsi:type="SOAP-ENC:Array">
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">id</key>
<value xsi:type="xsd:string">18</value>
</item>
<item>
<key xsi:type="xsd:string">name</key>
<value xsi:type="xsd:string">USD</value>
</item>
</item>
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">id</key>
<value xsi:type="xsd:string">19</value>
</item>
<item>
<key xsi:type="xsd:string">name</key>
<value xsi:type="xsd:string">EUR</value>
</item>
</item>
</getCurrencyListReturn>
</ns1:getCurrencyListResponse>
</SOAP-ENV:Body>
文件 wsdl 未指定返回类型。如何在 C# 中反序列化此消息?"项目"和"地图"的数量是未知的。应类似于此示例:
[SoapType(Namespace = "http://xml.apache.org/xml-soap", TypeName = "Map")]
public class Map
{
public item[] item;
}
public class item
{
[SoapElement]
public string key;
[SoapElement]
public string value;
}
在项目中,您应该添加对 Web 服务的引用。
通过这种方式,会自动创建 Web 服务的包装器,允许您调用其方法并使用包装器中的类获取响应。
序列化和反序列化对您是透明的。