我有一个简单的REST服务,其中所有方法的ResponseFormat都设置为Json。当我使用RestSharp客户端时,我总是以XML格式收到响应。但是当我使用Fiddler调用相同的方法时,我正按照预期在Json中收到响应。
另一个有趣的事情是,从RestSharp客户端进行的调用未记录在Fiddler中。所以我无法检查发生了什么。
这是我的服务:
[ServiceContract]
public interface IService1
{
[WebInvoke(UriTemplate = "Create", Method = "POST", ResponseFormat = WebMessageFormat.Json)]
SampleItem Create(SampleItem instance);
[WebGet(UriTemplate = "Get/{id}", ResponseFormat = WebMessageFormat.Json)]
SampleItem Get(string id);
}
这是SimpleItem类:
public class SampleItem
{
public string Id { get; set; }
public string StringValue { get; set; }
}
这就是我如何打电话来起诉RestSharp客户端:
var request = new RestRequest("Create", Method.POST);
var newItem = new SampleItem { Id = "12347", StringValue = "Value 1" };
request.RequestFormat = DataFormat.Json;
request.AddBody(newItem);
var responce = client.Execute<SampleItem>(request);
var respObj = responce.Data;
Console.WriteLine("Id:{0}, StringValue:{1}", respObj.Id, respObj.StringValue);
我使用的是RestSharp版本104.4。
我需要在客户端上设置一些能够在Json中接收响应的内容吗?
答案 0 :(得分:3)
每https://groups.google.com/forum/#!topic/restsharp/KD2lsaTC0eM:
通过检查自动生成Accept标头 &#34;处理&#34;在RestClient实例中注册的。一种选择 是使用RestClient.ClearHandlers();然后显式添加回来 使用RestClient.AddHandler的JSON反序列化器(&#34; application / json&#34;, new JsonDeserializer());
您可以通过以下步骤确保Fiddler捕获您的RestSharp(和其他.NET流量):http://fiddlerbook.com/fiddler/help/hookup.asp#Q-DOTNET
答案 1 :(得分:1)
就我而言
yield
解决了我的问题。