【发布时间】:2014-10-01 22:13:51
【问题描述】:
所以我试图从 windows phone 8 应用程序中的 Url 获取 Json 字符串。 我只需要调用一个返回此字符串的回调 URL,就差不多了,但不知怎的,我已经坚持了好几天了,我只是不明白该怎么做
我有一个 urlparser 类,其中包含 2 个方法:
public void ParseJsonUrl(string url)
{
Uri uri = new Uri(url);
WebClient webClient = new WebClient();
webClient.DownloadStringCompleted += webClient_DownloadStringCompleted;
webClient.DownloadStringAsync(uri);
}
void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
var jsonData = JsonConvert.DeserializeObject<parameter>(e.Result);
Debug.WriteLine(jsonData.parameter1);
}
现在我只是尝试显示我的 Json 字符串中包含的参数之一,当然,一旦我开始工作,我的方法将执行其他操作
我的 urlparser.cs 文件开头有一个名为“parameters”的类,看起来像
public class parameter
{
public string parameter1 { get; set; }
public string parameter2 { get; set; }
public string parameter3 { get; set; }
}
但这不起作用...我收到此错误
'System.Reflection.TargetInvocationException'
我按照这个教程http://blogs.msdn.com/b/pakistan/archive/2013/06/23/10425845.aspx 并看到许多其他几乎相同的东西,但不幸的是,这不起作用。在某些教程中,他们使用“DownloadString”而不是“DownloadStringAsync”,但我不能调用此方法(WP8 可能不可用),在其他一些教程中,他们在方法中使用“await”,但我不明白我在哪里应该放置“等待”语句以及我应该添加哪些其他代码
此外,一旦我能够在我的 var 中获取我的 json 数据,如果有人能告诉我如何从另一个类中访问它,那就太好了!
谢谢!
【问题讨论】:
-
糟糕忘记了,我马上补上
-
试着看看 InnerException 说了什么
-
我认为
DownloadStringAsync如果你只是await会返回字符串。 -
可能在元素完全加载之前引发
-
那么我能做的最好的事情是什么?用 await 实现它?或者尝试另一种方式?如果是这样,如何完全实现异步方法?我在“public”之后添加“async”,然后在 webClient.DownloadStringAsync 之前添加“await”?但这是一个无效的方法,所以我不能等待它......我知道我可能不清楚,但我几乎不明白这是如何工作的
标签: c# json windows-phone-8 webclient webclient-download