如何在Xamarin.forms pcl中从Url中检索json字符串

时间:2016-05-03 09:14:50

标签: c# json http xamarin xamarin.forms

例如我有网址http://www.pizzaboy.de/app/pizzaboy.json 由于Xamarin.forms PCL不支持WebClient,因此我使用了Xamarin在表单中使用Web服务的文档 并按照这个例子。

  

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。

[这是代理问题,上面的代码很精细]

1 个答案:

答案 0 :(得分:1)

你的片段对我来说看起来还不错,我只是试一试,它对我来说就像魅力一样。我在内容变量中获得了JSON字符串,我也可以反序列化它。这是我分享我使用的片段。

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; }
}