如何使用HttpClient读取XML响应?
显然HttpClient
是新推荐的HTTP请求方式,因此我尝试使用它向Delicious API发出请求,返回XML响应。 这是我得到的:
internal class Program { private static void Main(string[] 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 string[] Popular { get; set; } public string[] Recommended { get; set; } public string[] Network { get; set; } }
但是,它会在ReadAsAsync
位上抛出exception,
附加信息:无法加载文件或程序集’Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed’或其中一个依赖项。 该系统找不到指定的文件。
也许我错过了一些assembly,但这让我感到震惊。 返回类型是XML,而不是JSON,但我仍然不太确定这个ReadAsAsync
方法是如何工作的,或者我如何指定它。
示例响应如下所示:
yahoo! yahoo web tools searchengines yahoo! yahoo web for:Bernard for:britta for:deusx
如何将其解析成一些可用的格式?
“我怎么能把它解析成一些可用的格式?”
[XmlRoot("suggest")] public class DeliciousSuggest { [XmlElement("popular")] public string[] Popular { get; set; } [XmlElement("recommended")] public string[] Recommended { get; set; } [XmlElement("network")] public string[] Network { get; set; } }
并使用XmlSerializer反序列化。
您应该从del.icio.us读取作为字符串的响应,然后您可以按如下方式反序列化它:
上述就是C#学习教程:如何使用HttpClient读取XML响应?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
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 }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/962731.html