c# - 使用 webclient 从 webservices 获取 json,而不用其他方法操作数据

标签 c# json web-services windows-phone-8 webclient

我正在Windows Phone 8上进行开发,我想知道当我们调用WebClient的DownloadStringCompleted时是否可以以相同的方法操作数据?

private void DownloadDataFromWebService(String uri)
    {
        WebClient wc = new WebClient();
        wc.DownloadStringAsync(new Uri(uri));
        wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
    }

    private void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        RootObject r = JsonConvert.DeserializeObject<RootObject>(e.Result);
        List<Category> listeCategories = r.Result;
    }

因此,我想仅用一种方法管理所有代码,因为我想返回一个对象 例如,

private List<Category> GetCategories(String uri)
    {
        WebClient wc = new WebClient();
        wc.DownloadStringAsync(new Uri(uri));
        .....
        .....
        RootObject r = JsonConvert.DeserializeObject<RootObject>(e.Result);
        return (List<Category>) r.Result;
    }

最佳答案

是的,这是可能的,由于神奇的 TaskCompletionSource 类,http://msdn.microsoft.com/en-us/library/dd449174(v=vs.95).aspx 。下载:

async Task<List<object>> getCategories(String uri)
{
    var taskCompletionObj = new TaskCompletionSource<string>();
    var wc= new webClient();
    wc.DownloadStringAsync(new URI(uri, Urikind.Absolute)) += (o, e) =>
    {
    taskCompletionObj.TrySetResult(e.Result);
    };
    string rawString = await taskCompletionObj.Task;
    RootObject r = JsonConvert.DeserializeObject<RootObject>(rawString);
    return (List<Category>)r.Result; 
}

使用:var x = wait getCategories(myURI);

关于c# - 使用 webclient 从 webservices 获取 json,而不用其他方法操作数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15340081/

相关文章:

c# - 为什么我的 ASP.NET Web 服务不能启动进程,但我的 .NET 控制台应用程序可以?

c# - 缩放后重新计算面板 AutoScrollPosition

c# - 是否有使用 DDD(领域驱动设计)的开源项目?

java - jackson 有条件的@JsonUnwrapped

PHP IF 如何包含多个条件?

php - 如何从 post 请求 swift 3 中解析 JSON

c# - 编译 Expression<T> 时,它是否被隐式缓存?

c# - 什么时候需要使用 ViewState

java - 为简单的数据结构创建单独的类在 Objective-C 中是矫枉过正的

.net - NetSuite API 创建订单时出错