C# 如何生成自定义SOAP消息

C# 如何生成自定义SOAP消息,c#,.net,wcf,xml-serialization,messagecontract,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&g

我有一个网站,在我的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客户端发布此响应的消息契约

您发布的不是SOAP消息,因此
消息契约
不合适

我想你发布的是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; }

}
[DataContract]
公共类服务器单元
{
[数据成员]
公共服务器状态{get;set;}
[数据成员]
公共列表用户{get;set;}
}
[数据合同]
公共类服务器状态
{
[数据成员]
公共字符串名称{get;set;}
[数据成员]
公共日期时间日期{get;set;}
}
[数据合同]
公共类用户
{
[数据成员]
公共字符串登录{get;set;}
[数据成员]
公共字符串密码{get;set;}
}

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

我认为WCF在您的情况下没有用处


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

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

这是服务的完整响应,因此我不能使用DataContract