Comment utiliser HttpClient pour lire une réponse XML?

Apparemment, HttpClient est la nouvelle méthode recommandée pour créer des requêtes HTTP. J’essaie donc de l’utiliser pour envoyer une requête à l’API Delicious, qui renvoie une réponse XML. Voici ce que j’ai

 internal class Program { private static void Main(ssortingng[] args) { var credentials = new NetworkCredential("username", "password"); var handler = new HttpClientHandler { Credentials = credentials}; var client = new HttpClient(handler); var suggest = new Uri("https://api.del.icio.us/v1/posts/suggest"); var suggestions = client.GetAsync(suggest.AddQueryParams("url", "https://yahoo.com")) .ContinueWith(t => t.Result.Content.ReadAsAsync()) .Unwrap() .Result; Console.ReadLine(); } } public class DeliciousSuggest { public ssortingng[] Popular { get; set; } public ssortingng[] Recommended { get; set; } public ssortingng[] Network { get; set; } } 

Cependant, il lève une exception sur le bit ReadAsAsync ,

Informations complémentaires: Impossible de charger le fichier ou l’assembly ‘Newtonsoft.Json, Version = 4.5.0.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed’ ou l’une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Il me manque peut-être un peu d’assemblée, mais cela m’a semblé décevant. Le type de retour est XML, pas JSON, mais je ne suis toujours pas sûr du fonctionnement de cette méthode ReadAsAsync , ni même de la manière dont je le spécifierais.

Un exemple de réponse ressemble à ceci:

   yahoo! yahoo web tools searchengines yahoo! yahoo web for:Bernard for:britta for:deusx  

Comment puis-je parsingr cela dans un format utilisable?

“Comment puis-je parsingr cela dans un format utilisable?”

  [XmlRoot("suggest")] public class DeliciousSuggest { [XmlElement("popular")] public ssortingng[] Popular { get; set; } [XmlElement("recommended")] public ssortingng[] Recommended { get; set; } [XmlElement("network")] public ssortingng[] Network { get; set; } } 

et utiliser XmlSerializer pour désérialiser.


Vous devriez relire la réponse de del.icio.us en tant que chaîne, puis vous pouvez la désérialiser comme suit:

 var s = "this is the response from del"; var buffer = Encoding.UTF8.GetBytes(s); using (var stream = new MemoryStream(buffer)) { var serializer = new XmlSerializer(typeof(DeliciousSuggest)); var deliciousSuggest = (DeliciousSuggest)serializer.Deserialize(stream); //then do whatever you want }