最近、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.
RequestFormat Json
Http header を設定して追加しましたが、結果は私が期待したもの(Jsonデータ形式)ではありません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 メッセージ形式の両方を指定した場合、最終的にどちらが機能するでしょうか? 許可されていますか?
ありがとう。良い一日を過ごしてください。