C# Can';下载Json数组Windows phone

C# Can';下载Json数组Windows phone,c#,windows-phone-8,httpclient,webclient,C#,Windows Phone 8,Httpclient,Webclient,我可以使用以下代码在Windows 8中下载Json数组: aString=“” 这100%有效 我正试图在Windows phone中使用此 private void GetJSON(string aNASAURL) { WebClient webClient = new WebClient(); webClient.DownloadStringCompleted += new DownloadStringComp

我可以使用以下代码在Windows 8中下载Json数组:

aString=“”

这100%有效

我正试图在Windows phone中使用此

        private void GetJSON(string aNASAURL)
        {
            WebClient webClient = new WebClient();
            webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClientHandler);
              webClient.DownloadStringAsync(new Uri(aString));
}
    private void webClientHandler(object sender, DownloadStringCompletedEventArgs e)
        {
            var lResponse = e.Result;
}
这不起作用,我收到此异常:

类型为“System.Reflection.TargetInvocationException”的异常 发生在System.ni.dll中,但未在用户代码中处理

进入内部异常,我看到以下内容:

InnerException{System.Net.WebException:远程服务器返回错误:NotFound。-->System.Net.WebException:远程服务器返回错误:NotFound

完全例外如下

编辑: HttpClient类对windows phone不可用。我根据interwebs的建议选择了WebClient。向其他选项开放。Wait方法似乎不起作用,WebClient必须被称为Async。我认为这可能与我将字符串转换为URI有关。不幸的是,url还不能公开,但这里有一个类似的例子r url结构为字符串

为清晰起见进行了编辑

> -     e   {System.Net.DownloadStringCompletedEventArgs}   System.Net.DownloadStringCompletedEventArgs
+       base    {System.Net.DownloadStringCompletedEventArgs}   System.ComponentModel.AsyncCompletedEventArgs {System.Net.DownloadStringCompletedEventArgs}
-       Result  'e.Result' threw an exception of type 'System.Reflection.TargetInvocationException' string {System.Reflection.TargetInvocationException}
-       base    {System.Reflection.TargetInvocationException: An exception occurred during the operation, making the result invalid.  Check InnerException for exception details. ---> System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)
   --- End of inner exception stack trace ---
   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at System.Net.DownloadStringCompletedEventArgs.get_Result()} System.Exception {System.Reflection.TargetInvocationException}
+       Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
        HelpLink    null    string
        HResult -2146232828 int
-       InnerException  {System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)}   System.Exception {System.Net.WebException}
+       [System.Net.WebException]   {System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)}   System.Net.WebException
+       Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
        HelpLink    null    string
        HResult -2146233079 int
-       InnerException  {System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)}  System.Exception {System.Net.WebException}
+       [System.Net.WebException]   {System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)}  System.Net.WebException
+       Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
        HelpLink    null    string
        HResult -2146233079 int
+       InnerException  null    System.Exception
        Message "The remote server returned an error: NotFound."    string
        Source  "System.Windows"    string
        StackTrace  "   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)\r\n   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)\r\n   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)"    string
+       Static members      
+       Non-Public members      
        Message "The remote server returned an error: NotFound."    string
        Source  "System.Windows"    string
        StackTrace  "   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)\r\n   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)\r\n   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)"  string
+       Static members      
+       Non-Public members      
        Message "An exception occurred during the operation, making the result invalid.  Check InnerException for exception details."   string
        Source  "System"    string
        StackTrace  "   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()\r\n   at System.Net.DownloadStringCompletedEventArgs.get_Result()" string
+       Static members      
+       Non-Public members      
-e{System.Net.DownloadStringCompletedEventArgs}System.Net.DownloadStringCompletedEventArgs
+基本{System.Net.DownloadStringCompletedEventArgs}System.ComponentModel.AsyncCompletedEventArgs{System.Net.DownloadStringCompletedEventArgs}
-结果“e.Result”引发了类型为“System.Reflection.TargetInvocationException”字符串{System.Reflection.TargetInvocationException}的异常
-base{System.Reflection.TargetInvocationException:操作期间发生异常,导致结果无效。有关异常详细信息,请检查InnerException。-->System.Net.WebException:远程服务器返回错误:NotFound。-->System.Net.WebException:远程服务器返回错误:NotFound。
位于System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
在System.Net.Browser.ClientHttpWebRequest.c_uuDisplayClasse.b_uud(对象发送状态)中
在System.Net.Browser.AsyncHelper.c__DisplayClass1.b__0(对象发送状态)中
---内部异常堆栈跟踪的结束---
位于System.Net.Browser.AsyncHelper.BeginNoui(SendOrPostCallback beginMethod,对象状态)
位于System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在System.Net.WebClient.GetWebResponse(WebRequest请求,IAsyncResult结果)
在System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult结果)
---内部异常堆栈跟踪的结束---
位于System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfEssential()处
在System.Net.DownloadStringCompletedEventArgs.get_Result()}System.Exception{System.Reflection.TargetInvocationException}
+数据{System.Collections.ListDictionaryInternal}System.Collections.IDictionary{System.Collections.ListDictionaryInternal}
帮助链接空字符串
HResult-2146232828 int
-InnerException{System.Net.WebException:远程服务器返回错误:NotFound。-->System.Net.WebException:远程服务器返回错误:NotFound。
位于System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
在System.Net.Browser.ClientHttpWebRequest.c_uuDisplayClasse.b_uud(对象发送状态)中
在System.Net.Browser.AsyncHelper.c__DisplayClass1.b__0(对象发送状态)中
---内部异常堆栈跟踪的结束---
位于System.Net.Browser.AsyncHelper.BeginNoui(SendOrPostCallback beginMethod,对象状态)
位于System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在System.Net.WebClient.GetWebResponse(WebRequest请求,IAsyncResult结果)
在System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult结果)}System.Exception{System.Net.WebException}
+[System.Net.WebException]{System.Net.WebException:远程服务器返回错误:NotFound。-->System.Net.WebException:远程服务器返回错误:NotFound。
位于System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
在System.Net.Browser.ClientHttpWebRequest.c_uuDisplayClasse.b_uud(对象发送状态)中
在System.Net.Browser.AsyncHelper.c__DisplayClass1.b__0(对象发送状态)中
---内部异常堆栈跟踪的结束---
位于System.Net.Browser.AsyncHelper.BeginNoui(SendOrPostCallback beginMethod,对象状态)
位于System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在System.Net.WebClient.GetWebResponse(WebRequest请求,IAsyncResult结果)
在System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult结果)}System.Net.WebException中
+数据{System.Collections.ListDictionaryInternal}System.Collections.IDictionary{System.Collections.ListDictionaryInternal}
帮助链接空字符串
HResult-2146233079 int
-InnerException{System.Net.WebException:远程服务器返回错误:NotFound。
位于System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
在System.Net.Browser.ClientHttpWebRequest.c_uuDisplayClasse.b_uud(对象发送状态)中
在System.Net.Browser.AsyncHelper.c__DisplayClass1.b__0(对象发送状态)}System.Exception{System.Net.WebException}
+[System.Net.WebException]{System.Net.WebException:远程服务器返回错误:NotFound。
位于System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
在System.Net.Browser.ClientHttpWebRequest.c_uuDisplayClasse.b_uud(对象发送状态)中
在System.Net.Browser.AsyncHelper.c__DisplayClass1.b__0(对象发送状态)}System.Net.WebException
+数据{System.Collections.ListDictionaryInternal}System.Collections.IDictionary{System.Collections.ListDictionaryInternal}
帮助链接空字符串
HResult-2146233079 int
+InnerException空系统。异常
消息“远程服务器返回错误:NotFound。”
> -     e   {System.Net.DownloadStringCompletedEventArgs}   System.Net.DownloadStringCompletedEventArgs
+       base    {System.Net.DownloadStringCompletedEventArgs}   System.ComponentModel.AsyncCompletedEventArgs {System.Net.DownloadStringCompletedEventArgs}
-       Result  'e.Result' threw an exception of type 'System.Reflection.TargetInvocationException' string {System.Reflection.TargetInvocationException}
-       base    {System.Reflection.TargetInvocationException: An exception occurred during the operation, making the result invalid.  Check InnerException for exception details. ---> System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)
   --- End of inner exception stack trace ---
   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at System.Net.DownloadStringCompletedEventArgs.get_Result()} System.Exception {System.Reflection.TargetInvocationException}
+       Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
        HelpLink    null    string
        HResult -2146232828 int
-       InnerException  {System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)}   System.Exception {System.Net.WebException}
+       [System.Net.WebException]   {System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)}   System.Net.WebException
+       Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
        HelpLink    null    string
        HResult -2146233079 int
-       InnerException  {System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)}  System.Exception {System.Net.WebException}
+       [System.Net.WebException]   {System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)}  System.Net.WebException
+       Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
        HelpLink    null    string
        HResult -2146233079 int
+       InnerException  null    System.Exception
        Message "The remote server returned an error: NotFound."    string
        Source  "System.Windows"    string
        StackTrace  "   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)\r\n   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)\r\n   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)"    string
+       Static members      
+       Non-Public members      
        Message "The remote server returned an error: NotFound."    string
        Source  "System.Windows"    string
        StackTrace  "   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)\r\n   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)\r\n   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)"  string
+       Static members      
+       Non-Public members      
        Message "An exception occurred during the operation, making the result invalid.  Check InnerException for exception details."   string
        Source  "System"    string
        StackTrace  "   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()\r\n   at System.Net.DownloadStringCompletedEventArgs.get_Result()" string
+       Static members      
+       Non-Public members      
WebClient wc = new WebClient();
string result = await wc.DownloadAsync("http://www.stackoverflow.com");
public static partial class MyExtensions
{
    public static Task<string> DownloadAsync(this WebClient wc, string url)
    {
        TaskCompletionSource<string> tcs = new TaskCompletionSource<string>();
        DownloadStringCompletedEventHandler completed = null;

        completed = (s, e) =>
        {
            try
            {
                tcs.SetResult(e.Result);
            }
            catch (Exception ex)
            {
                tcs.SetException(ex.InnerException ?? ex);
            }
            finally
            {
                wc.DownloadStringCompleted -= completed;
            }
        };

        wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12";
        wc.DownloadStringCompleted += completed;
        wc.DownloadStringAsync(new Uri(url));

        return tcs.Task;
    }
}