在 WP8.1 中下载 .JSON 文件
Downloading a .JSON file in WP8.1
目前,我有这个代码:
string uri = "http://yts.to/api/v2/list_movies.json?limit=20&page=1";
var webRequest = (HttpWebRequest)WebRequest.Create(uri);
webRequest.Method = "GET";
var webResponse = (HttpWebResponse)webRequest.GetResponse();
if ((webResponse.StatusCode == HttpStatusCode.OK) && (webResponse.ContentLength > 0))
{
var root = JsonConvert.DeserializeObject<RootObject>("/list_movies.json");
var articles = root.data.movies.Select(m => new Article { Name = m.title, ImagePath = m.medium_cover_image, Year = m.year.ToString() }).ToList();
}
else
{
var dialog = new MessageDialog("Their seems to be a problem retrieving the data...");
dialog.Title = "Sorry";
}
但是 Visual Studio 告诉我 GetResponse(第 2 行)不存在。问题是什么? :/
看看 HttpClient。这在 WP8.1 上完美运行。
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(uri, cancel))
{
using (Stream stream = response.Content.ReadAsStreamAsync().Result)
{
using (StreamReader reader = new StreamReader(stream))
{
return new JsonSerializer().Deserialize<T>(new JsonTextReader(reader));
}
}
}
}
问题是程序集的 "Microsoft HTTP Client Libraries" Nuget 包版本不支持该方法。相反,您仅限于以下内容,这基本上意味着您必须使用 BeginGetRequestStream 和其他异步方法:
https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest(v=vs.95).aspx
这是一个如何发出请求的例子(上下文是一篇 Silverlight 文章,但它适用于你的情况):
http://www.c-sharpcorner.com/uploadfile/mgold/implementing-the-http-requestresponse-model-inside-of-silverlight/
目前,我有这个代码:
string uri = "http://yts.to/api/v2/list_movies.json?limit=20&page=1";
var webRequest = (HttpWebRequest)WebRequest.Create(uri);
webRequest.Method = "GET";
var webResponse = (HttpWebResponse)webRequest.GetResponse();
if ((webResponse.StatusCode == HttpStatusCode.OK) && (webResponse.ContentLength > 0))
{
var root = JsonConvert.DeserializeObject<RootObject>("/list_movies.json");
var articles = root.data.movies.Select(m => new Article { Name = m.title, ImagePath = m.medium_cover_image, Year = m.year.ToString() }).ToList();
}
else
{
var dialog = new MessageDialog("Their seems to be a problem retrieving the data...");
dialog.Title = "Sorry";
}
但是 Visual Studio 告诉我 GetResponse(第 2 行)不存在。问题是什么? :/
看看 HttpClient。这在 WP8.1 上完美运行。
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(uri, cancel))
{
using (Stream stream = response.Content.ReadAsStreamAsync().Result)
{
using (StreamReader reader = new StreamReader(stream))
{
return new JsonSerializer().Deserialize<T>(new JsonTextReader(reader));
}
}
}
}
问题是程序集的 "Microsoft HTTP Client Libraries" Nuget 包版本不支持该方法。相反,您仅限于以下内容,这基本上意味着您必须使用 BeginGetRequestStream 和其他异步方法: https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest(v=vs.95).aspx
这是一个如何发出请求的例子(上下文是一篇 Silverlight 文章,但它适用于你的情况): http://www.c-sharpcorner.com/uploadfile/mgold/implementing-the-http-requestresponse-model-inside-of-silverlight/