![](/img/trans.png)
[英]NullReferenceException in System.Threading.Tasks calling HttpClient.GetAsync(url)
[英]HttpClient.GetAsync(url) returns 504 to a URL which works in the browser
我可以手动访问URL,但在使用.Net时会超时。
我创建了一个按钮,可以更轻松地复制场景。 有时我会得到一个异常,说任务被取消了,否则这个代码片段后面会出现504错误:
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
var url = "http://api.dailyfive.tv/index.php?task=REQUEST_REGIONS&session=TestWin8&app=4&model=TestWin8&ver=1.0.0.7&os=8®ion=";
var output = await ReadHttpResponse(url);
}
private async Task<string> ReadHttpResponse(string url)
{
try
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
}
catch (Exception ex)
{
}
return null;
}
结果如下:
<html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/1.2.0</center>
</body>
</html>
看起来服务器对客户端的用户代理敏感。 当我将这些行添加到您的示例代码中时,代码应运而生:
client.DefaultRequestHeaders.UserAgent.Clear();
client.DefaultRequestHeaders.UserAgent.ParseAdd("Chrome/22.0.1229.94");
(可能有更好的方法 - 我之前没有使用过HttpClient
。)
顺便说一句,我希望你不会真的吞下这样的例外......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.