如何从 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

Xamarin.Forms 中的 MVVMLight 的 EventToCommand

使用PCL Xamarin Forms将图像上载到FTP服务器