如何从 Xamarin.forms pcl 中的 Url 检索 json 字符串
Posted
技术标签:
【中文标题】如何从 Xamarin.forms pcl 中的 Url 检索 json 字符串【英文标题】:How to retrive json string from Url in Xamarin.forms pcl 【发布时间】:2021-04-10 16:28:16 【问题描述】:例如我有一个 URL http://www.pizzaboy.de/app/pizzaboy.json 由于 Xamarin.forms PCL 不支持 WebClient,因此我使用了有关在表单中使用 Web 服务的 Xamarin 文档 并按照这个例子。
Link
我已经尽我所能来获取 json 字符串。但它不起作用。
以下代码不适用于提到的网址
public async Task<List<TodoItem>> RefreshDataAsync ()
var uri = new Uri ("http://www.pizzaboy.de/app/pizzaboy.json");
HttpClient myClient = new HttpClient();
var response = await myClient.GetAsync (uri);
if (response.IsSuccessStatusCode)
var content = await response.Content.ReadAsStringAsync ();
Items = JsonConvert.DeserializeObject <List<TodoItem>> (content);
响应带有设置为 null 的内容。
[免责声明:是网络代理问题阻止了上面的网址,上面的代码很好]
【问题讨论】:
内容为空还是项目为空?非常不同,如果 content 为 null 则服务器什么也不返回,如果 Items 为 null 则反序列化失败。 谢谢,我意识到这是代理问题! 【参考方案1】:你的 sn-p 在我看来一切正常,我只是试了一下,它对我来说就像魅力一样。我在内容变量中得到了 JSON 字符串,我也可以反序列化它。这里分享一下我用的sn-p。
public static async Task RefreshDataAsync ()
var uri = new Uri ("http://www.pizzaboy.de/app/pizzaboy.json");
HttpClient myClient = new HttpClient();
var response = await myClient.GetAsync (uri);
if (response.IsSuccessStatusCode)
var content = await response.Content.ReadAsStringAsync ();
var Items = JsonConvert.DeserializeObject <List<RootObject>> (content);
Console.WriteLine ("");
这是我使用的类 RootObject 的定义
public class RootObject
public string Name get; set;
public string Address1 get; set;
public int Zip get; set;
public string City get; set;
public string Phone get; set;
public double Lat get; set;
public double Lon get; set;
public string Link get; set;
【讨论】:
这和我正在尝试的一样,它的代理问题以上是关于如何从 Xamarin.forms pcl 中的 Url 检索 json 字符串的主要内容,如果未能解决你的问题,请参考以下文章
忽略 Xamarin.Forms (PCL) 中的 SSL 证书错误
如何将json.net添加到Xamarin Forms,本地项目或PCL上?
Xamarin Forms PCL 中的 LoadApplication 错误
有没有办法使用 Xamarin.Forms PCL 项目中的 Devexpress.Xamarin.Android.Charts