0

我有一个网站在我的 GET 请求中给我这个 xml 响应:

<ServerUnits>
    <State Name="ServerName" Date="2008-04-01" >
    <Users>
       <User login="someUser1" Password="123456">
       <User login="someUser2" Password="qwerty">
    </Users>
</ServerUnits>

我想使用 WCF 客户端来处理这项服务。如何为 WCF 客户解除此响应的消息合同

4

3 回答 3

0

您发布的不是 SOAP 消息,因此MessageContract不合适。

我想您发布的是 SOAP 正文内容,因此您需要按照以下方式做一些事情:

[DataContract]
public class ServerUnits
{
    [DataMember]
    public ServerState State { get; set; }

    [DataMember]
    public List<User> Users { get; set; }
}

[DataContract]
public class ServerState
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public DateTime Date { get; set; }
}

[DataContract]
public class User
{
    [DataMember]
    public string login { get; set; }

    [DataMember]
    public string password { get; set; }

}

更新

您的消息不是 SOAP。但是如果你使用webHttpBindingwhich 发送和接收 POX,你仍然可以使用上面的代码。

于 2011-03-30T09:20:10.237 回答
0

我认为 WCF 没用是你的情况。

一种更简单的方法是编写与此 xml 响应匹配的对象,并将 xml 流反序列化到对象实例上。

于 2011-03-30T09:25:02.390 回答
0

最好为 WCF 服务创建客户端代理。它将为您创建数据合约(如@Aliostad 所述),因此您不必手动创建它们。为此,请右键单击您的解决方案并从上下文菜单中选择“添加服务引用...”,然后输入 WCF 服务的地址。

于 2011-03-30T10:57:30.017 回答