【发布时间】:2018-09-18 16:18:00
【问题描述】:
我正在开发一个访问第三方 SOAP 服务的 WCF 客户端,但我在反序列化消息时遇到了问题。
我有原始消息的转储,但没有明显的方式来阅读它们。
如何使用 WCF 从文件中读取 SOAP 消息?
【问题讨论】:
我正在开发一个访问第三方 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.
【讨论】: