我有一个请求 URL 的 WebClient
。我想在 UWP 应用程序中做同样的事情,我看到我必须导入 Microsoft.Net.Http
并使用 HttpClient
。
所以我替换了这个(在类库中):
WebClient client = new WebClient();
client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
string content = client.DownloadString(url);
通过这个在 PCL 库中:
HttpClient client = new HttpClient();
string content = await client.GetStringAsync(url);
现在我得到了这个异常(exception):
System.Net.Http.HttpRequestException occurred
HResult=-2147012867
Message=An error occurred while sending the request.
Source=System.Net.Http
StackTrace:
at System.Net.Http.HttpClientHandler.<SendAsync>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at XXXX.YYYY.MHDJ.ZZZZ.<ParsePage>d__4.MoveNext()
InnerException:
ErrorCode=-2147012867
HResult=-2147012867
Message=Le texte associé à ce code d’erreur est introuvable.
Impossible d'établir une connexion avec le serveur
Source=""
StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Net.Http.HttpHandlerToFilter.<SendAsync>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Net.Http.HttpClientHandler.<SendAsync>d__1.MoveNext()
InnerException:
我认为问题不是标题,那是什么?
最佳答案
十六进制的 HRESULT
代码 -2147012867
是 0x80072EFD
。 0x8007
前缀意味着它实际上是一个 HRESULT
wrapper around a Win32
error code .原始的 Win32
错误代码是 0x2EFD
。
Win32
error code list告诉我们值 0x2EE0
到 0x2F8F
是 ERROR_INTERNET_*
错误代码,这听起来像是正确的错误类型。在访问 Win32
ERROR_INTERNET_*
error code listing 的链接后,我们可以将错误代码 0x2EFD
转换回十进制 (12029
) 并发现它是错误 ERROR_INTERNET_CANNOT_CONNECT
:
The attempt to connect to the server failed.
相当笼统,没有太大帮助。
我建议再次尝试连接,确保您的应用程序具有适当的权限并且设备确实具有有效的互联网连接。如果这不起作用,请尝试重新添加 UserAgent
header ;您设备上的网络堆栈可能坚持使用它。
更新: 追踪错误代码的含义相当乏味,所以我 wrote an app to do it .
关于c# - 使用 HttpClient 时出现 HttpRequestException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36631841/