2012-12-19 56 views
0

有人能告诉我如何向wcf rest服务发布请求吗?我的代码如下试图向wcf REST服务发布请求时发生意外的HTML响应

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其余部分已被弃用。但是,有人可以告诉我如何实施? thx

+0

你需要找出为什么服务正在考虑你的请求是坏的。在服务器上启用跟踪,它应该有一些额外的信息。 – carlosfigueira

回答

0

无论何时您收到HTML和您期望的数据,HTML都可能表示来自服务器的错误消息。捕获并显示它,你会看到错误是什么。

+0

thx您的答复。您是正确的在服务器代码内部的某处引发异常,但为什么它应该始终提出错误的请求?所以我认为客户端出了问题!当我修复服务器代码时,一切都很正常。嘿,它花了我近一个星期:( – Sat

0

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

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

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

相关问题