【问题标题】:Deserialization soap response C#反序列化soap响应C#
【发布时间】:2012-04-11 21:30:39
【问题描述】:

我收到了来自服务的肥皂响应:

<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;
}

【问题讨论】:

    标签: c# soap deserialization messages


    【解决方案1】:

    在您的项目中,您应该添加对 web 服务的引用。
    通过这种方式,Web 服务的包装器会自动创建,让您可以调用其方法并使用包装器内的类获取响应。
    序列化和反序列化对您来说是透明的。

    【讨论】:

    • 这是个问题。文件 wsdl 未指定返回类型。我想自己描述一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    相关资源
    最近更新 更多