我正在开发一个访问第三方SOAP服务的WCF客户端,但是我无法反序列化消息。
我有原始消息的转储,但没有明显的方法来阅读它们。
如何使用WCF从文件中读取SOAP消息?
要从WCF中的流中读取消息,您需要一个MessageEncoder
。对于SOAP消息,您可以通过TextMessageEncodingBindingElement
获取。
以下代码对我有用:
TextMessageEncodingBindingElement binding = new TextMessageEncodingBindingElement(
MessageVersion.Soap11, Encoding.UTF8);
MessageEncoderFactory factory = binding.CreateMessageEncoderFactory();
MessageEncoder encoder = factory.CreateSessionEncoder();
TypedMessageConverter tmc = TypedMessageConverter.Create(
typeof(GetDataResponse), "getDataResponse");
GetDataResponse response;
using (FileStream fs = new FileStream(@"Response-20180918111722079.log", FileMode.Open))
{
Message msg = encoder.ReadMessage(fs, 4096);
response = tmc.FromMessage(msg);
}
// Use your response here.