C# 如何生成自定义SOAP消息
我有一个网站,在我的GET请求中为我提供以下xml响应: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
<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