首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RestSharp使用

RestSharp使用
EN

Stack Overflow用户
提问于 2012-08-23 11:56:59
回答 1查看 12.1K关注 0票数 2

最近,我正在使用RestSharp来使用我的Restful资源。并期望在服务器和客户端之间与JSon进行数据交换。下面是我的C#代码。

代码语言:javascript
复制
var client = new RestSharp.RestClient();
var request = new RestRequest(sUrl,Method.POST);
request.RequestFormat = DataFormat.Json;
request.Timeout =  TIME_OUT_MILLISECONTS ;
request.AddHeader("Content-Type", "application/json");
request.AddBody(new { appID = sAppId, loginName = sUserName, password=sPassword });
var response = client.Execute(request);
string s=response.Content;//It is always XML format.

结果不是我所期望的(Json数据格式),尽管我已经设置了RequestFormat Json并添加了Http头Content-Type。因此,我决定使用.Net反射器来了解RestClient.Execute方法中发生了什么。这是该方法的代码。

代码语言:javascript
复制
public RestClient()
    {
        ...
        this.AddHandler("application/json", new JsonDeserializer());
        this.AddHandler("application/xml", new XmlDeserializer());
        this.AddHandler("text/json", new JsonDeserializer());
        this.AddHandler("text/x-json", new JsonDeserializer());
        this.AddHandler("text/javascript", new JsonDeserializer());
        this.AddHandler("text/xml", new XmlDeserializer());
        this.AddHandler("*", new XmlDeserializer());
        ...
    }

我对此有一些疑问:

  1. 由于RestClient向HttpWebRequest中添加了许多类型的Content-Type。构建请求是正确的吗?我认为这可能就是为什么Response.Content总是XML的原因。
  2. 我不知道为什么RestClient需要构建这样的HttpWebRequest。这么做有什么意义吗?
  3. 如果我们在Http请求中同时指定了JSon和XMl消息格式,那么哪一个最终可以工作?允许这样做吗?

谢谢。祝你今天愉快。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-24 20:48:43

RestSharp将根据响应的内容类型使用正确的处理程序。这就是那些AddHandler正在做的事情;它将RestClient配置为在响应中接受某些内容类型,并将这些类型映射到反序列化器。通常,您希望为json内容类型设置一个接受头,通知服务器在响应中发送json。

代码语言:javascript
复制
request.AddHeader("Accept", "application/json")

当然,这假设您正在访问的服务器被配置为使用json响应。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12091023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档