当需要Json时,RestSharp响应内容始终为XML格式

时间:2014-01-03 06:11:04

标签: json rest fiddler restsharp

我有一个简单的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中接收响应的内容吗?

2 个答案:

答案 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解决了我的问题。