WCF网络API预览6:否';MediaTypeFormatter';有空吗

WCF网络API预览6:否';MediaTypeFormatter';有空吗,wcf,wcf-web-api,Wcf,Wcf Web Api,我正在考虑在WCF Web API Preview 6中使用HttpClient来使用第三方服务。此第三方服务接受并返回XML格式的数据。他们的HTTP响应的内容类型标头设置为text/plain。将响应内容类型设置为text/plain可能会导致问题。我向服务部门提出如下请求: Task<HttpResponseMessage> result = client.PostAsync(apiEndpoint, new ObjectContent(typeof (LeaveAccrual

我正在考虑在WCF Web API Preview 6中使用HttpClient来使用第三方服务。此第三方服务接受并返回XML格式的数据。他们的HTTP响应的内容类型标头设置为text/plain。将响应内容类型设置为text/plain可能会导致问题。我向服务部门提出如下请求:

Task<HttpResponseMessage> result = client.PostAsync(apiEndpoint, new ObjectContent(typeof (LeaveAccrualRequest), request));
Task result=client.PostAsync(apident,newobjectcontent(typeof(leaveAccountalRequest),request));
使用Fiddler,我可以看到请求转到服务,并返回适当的预期响应。但是,当我尝试访问响应时,我最终出现以下InvalidOperationException:

没有“MediaTypeFormatter”可用于读取媒体类型为“text/plain”的“LeaveAccountalResponse”类型的对象


有没有办法告诉HttpClient,即使HTTP响应说内容类型是text/plain,它也应该将其作为application/xml处理?

您可以从XmlMediaTypeFormatter派生并添加“text/plain”标题:

根据您的要求,在添加“文本/纯文本:

SupportedMediaTypes.Clear();
[更新]


访问您的请求内容并使用ReadAsAsync方法Overlod,该方法接受IEnumerable。

感谢您的回复!我按照您的建议添加了一个派生类,现在我的请求如下:PlainTextXmlFormatter formatter=new PlainTextXmlFormatter();MediaTypeFormatterCollection格式化程序=新的MediaTypeFormatterCollection{formatter};任务结果=客户端.PostAsync(apiEndpoint,新的ObjectContent(typeof(LeaveAccountalRequest),request,formatters));仍然看到相同的错误。我还尝试删除所有其他受支持的媒体类型,但没有帮助。抱歉,我的建议已在服务器端。更新了我的答案。请参阅
SupportedMediaTypes.Clear();