C# Can';下载Json数组Windows phone
我可以使用以下代码在Windows 8中下载Json数组: aString=“” 这100%有效 我正试图在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
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;
}
}