Недавно я использовал RestSharp для использования своего Restful Resouce. и ожидаемый обмен данными с JSon между сервером и клиентом. Ниже мой код С#.
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 добавляет много видов
Content-Type
в HttpWebRequest. Это правильный способ построить запрос? И я думаю, может быть, это причина, по которой Response.Content всегда XML.Я не знаю, зачем RestClient нужно создавать такой
HttpWebRequest
. Есть ли смысл это делать?Если мы указали формат сообщения JSon и XML в Http-запросе, какой из них работает в конечном итоге? Это разрешено?
Спасибо. Хорошего дня.