RestSharp Utilisation
Récemment, j'ai été en utilisant RestSharp à consommer ma Reposant Ressource. et attendu l'échange de données JSon entre le serveur et le client. Ci-dessous mon code 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.
Le résultat n'est pas ce que j'ai prévu pour le format Json(format de données), même si j'avais mis le RequestFormat Json
et ajouter un en-tête Http Content-Type
. J'ai donc décidé d'utiliser l' .Net Réflecteur à découvert de Ce qui s'est passé dans le RestClient.Méthode Execute. Voici le code de la méthode.
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());
...
}
J'ai quelques questions à ce sujet:
-
Comme le RestClient ajoute de nombreux types de
Content-Type
dans la HttpWebRequest. Est-ce une bonne façon de construire une Demande? Et je pense que c'est Peut-être la raison pour laquelle la Réponse.Toujours contenu XML. -
Je ne sais pas pourquoi le RestClient besoin pour construire un
HttpWebRequest
comme ça. Aucun sens de le faire? -
Si nous avons spécifié les deux JSon et XMl format de message dans une Requête Http, celui qui fonctionne enfin? Est-il permis?
Grâce. Avoir une bonne journée.
Vous devez vous connecter pour publier un commentaire.
RestSharp va utiliser le bon gestionnaire basé sur le type de contenu de la réponse. C'est ce que ces
AddHandler
s sont en train de faire, sa configuration de la RestClient à accepter certains types de contenu de la réponse et de la cartographie de ces types de deserializers. Normalement, vous devez définir un en-tête accept pour le json type de contenu qui informe le serveur pour envoyer json dans la réponse.Bien sûr, cela suppose que le serveur vous sont frapper est configuré de manière à répondre avec json.
RestClient.AddHandler("text/html", new JsonDeserializer());
via: groups.google.com/forum/#!topic/restsharp/_yjd2c093ks