0

有人可以告诉我如何将请求发布到 wcf 休息服务吗?我的代码在下面

TResponse Post<TRequest, TResponse>(string uri, TRequset input){
  HttpClient client = new HttpClient();
  HttpContent content = new ObjectContent<TRequest>(input, new XmlMediaTypeFormatter());
  HttpResponseMessage message = client.PostAsync(uri, content).Result;
  return message.Content.ReadAsAsync<TResponse>().Result;
}

但它给出了以下异常

System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=No MediaTypeFormatter is available to read an object of type 'String' from content with media type 'text/html'.
Source=System.Net.Http.Formatting

消息变量的值为

message {StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Connection: Close
Cache-Control: private
Date: Wed, 19 Dec 2012 14:36:32 GMT
Server: ASP.NET
Server: Development
Server: Server/10.0.0.0
X-AspNet-Version: 4.0.30319
Content-Length: 1766
Content-Type: text/html
}}  System.Net.Http.HttpResponseMessage

我知道 wcf rest 已被弃用。但是有人可以告诉我如何实现吗?谢谢

4

2 回答 2

0

默认情况下,WCF 使用 SOAP 作为消息协议,从您的示例来看,您似乎正在使用 XML 正文执行 HTTP。

如果您使用的是普通的 WCF 服务,那么使用典型的 WCF 客户端(通过 ChannelFactory 或类似的东西创建)并使用它来调用不同的操作会更容易。

如果您没有使用典型的 WCF 服务,那么共享您的配置/代码可以帮助您获得更好的答案。

于 2012-12-20T22:20:10.710 回答
0

每当您收到 HTML 和您预期的数据时,HTML 很可能代表来自服务器的错误消息。捕获并显示它,您将看到错误是什么。

于 2012-12-20T22:40:44.910 回答