最近我正在使用RestSharp来消耗我的 Restful Resouce。并期望在服务器和客户端之间与 JSON 交换数据。下面是我的 C# 代码。
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 Reflector 来找出 RestClient.Execute 方法中发生了什么。这是该方法的代码。
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());
...
}
我对此有一些疑问:
由于 RestClient 在 HttpWebRequest 中添加了多种类型
Content-Type
。构建请求是否正确?我想也许这就是为什么 Response.Content 总是 XML 的原因。我不知道为什么 RestClient 需要构建一个
HttpWebRequest
这样的。这样做有什么意义吗?如果我们在一个 Http Request 中同时指定了 JSon 和 XMl 消息格式,那么最后哪一个可以工作?是否允许?
谢谢。祝你有美好的一天。