如何生成自定义SOAP消息

时间:2011-03-30 09:11:35

标签: c# .net wcf xml-serialization messagecontract

我有一个网站在我的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 Clien删除此响应的消息合同

3 个答案:

答案 0 :(得分: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。但是,如果使用发送和接收POX的webHttpBinding,您仍然可以使用上面的代码。

答案 1 :(得分:0)

我认为WCF对你来说没用。

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

答案 2 :(得分:0)

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