【问题标题】:How can I get my Json object from URL, Windows Phone 8.1 (C#)如何从 URL、Windows Phone 8.1 (C#) 获取我的 Json 对象
【发布时间】:2015-10-08 14:07:49
【问题描述】:

假设我有这个数据:

{
    "A": "Z",
    "B": {
        "C": "Y",
        "D": "X"
    }
}

存储在this链接中。

现在我想在单击按钮时从我的 Windows Phone 应用程序中获取这些数据。

private void login(object sender, RoutedEventArgs e)
{
    //I want to read the json data here        
}

以前我尝试过WebClientDownloadStringAsync 方法。但是这个类在 System.Net 中不再可用。我想知道可以学习如何使用 url 获取和发布数据的地方和文档。

谢谢。

【问题讨论】:

  • private void login(object sender, RoutedEventArgs e) { RunAsync().Wait(); } static async Task RunAsync() { using (var webClient = new HttpClient()) { var json = webClient.GetStringAsync("api.myjson.com/bins/2hxei"); } } } 现在尝试了这段代码如何测试对象是否在 var 或不是。

标签: c# json windows-phone-8 webclient


【解决方案1】:
using (var client = new WebClient())
{
    var uri = "https://api.myjson.com/bins/2hxei";
    var result = System.Text.Encoding.Default.GetString(client.DownloadData(uri));

    // result : {"A":"Z","B":{"C":"Y","D":"X"}}
}

顺便说一句。 WebClient 在 .NET 中肯定仍然可用

【讨论】:

    【解决方案2】:

    如果您真的不想使用Web Client(旧)而想使用新的Http Client,请使用以下代码。

    public static string GetJsonData()
    {
        var promise = GetWebStringAsync("https://api.myjson.com/bins/2hxei");
        // do something else if needed
        var jsonData = promise.Result;
        return jsonData; //{"A":"Z","B":{"C":"Y","D":"X"}}
    }
    
    public static async Task<string> GetWebStringAsync(string uri)
    {
        using (var client = new HttpClient())
        {
            var stringTask = await client.GetStringAsync(uri);
            return stringTask;
        }
    }
    

    在这里,如果你愿意,你也可以直接做var jsonString= client.GetStringAsync(uri).Result,而不是var stringTask = await client.GetStringAsync(uri)。但是您将失去aynchronous 方法的好处,并且调用将是同步的。调用线程将在那里等待,直到收到来自网络调用的响应。

    【讨论】:

    • jw.你能提供一个来源,说明 WebClient 已被弃用吗?
    • @Meehow 虽然我记得在某些真实文档中看到标记为“已弃用”的 Web 客户端,但我找不到!很奇怪!我已经编辑了答案并删除了 deprecated 以免误导其他人!感谢您指出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多