我有一个客户端程序从WCF休息服务获取httpresponsemessage。我不能为我的生活阅读那篇回复中的内容。它在内容中简单地说是“流数据内容”,内容长度为0,内容类型为“”。
我尝试过ReadAsStream()并尝试将流转换为xml文档,但是我收到一条错误消息,说根节点丢失了。
我尝试过使用WebClient,但我不知道要在标题中添加什么内容。
有人知道如何处理我的回复消息内容中的“流数据内容”吗?
答案 0 :(得分:3)
可能会出现一些问题。
阅读XML
我不知道ReadAsStream是否适用于XmlDocument,但是如果你可以使用XDocument则必须更容易。无论如何,如果WCF休息服务返回除XML之外的其他内容,您将需要处理它。例如
var stream = response.Content.ReadAsStream();
using (var reader = XmlReader.Create(stream))
{
XDocument.Load(reader);
}
标题与正文
第二个问题可能与生成响应的方式有关。进行查询时,您可以指定是否只应读取标题,或者是否应读取整个正文。鉴于内容长度为零,这意味着您将返回未知大小的流。您需要以这种方式处理流 - 将其加载到可以正确使用流的内容中。
您不应该使用WebClient,因为HTTP库是为这些东西制作的。
埃里克
答案 1 :(得分:1)
对于那些使用async
的人 - 请参阅以下示例:
HttpResponseMessage response = await task.ExecuteAsync(new CancellationToken());
var yourObject = (YourObject)new XmlSerializer(typeof(YourObject)).Deserialize(new StreamReader( await response.Content.ReadAsStreamAsync()));