【发布时间】:2015-10-04 09:39:49
【问题描述】:
我正在开发一个 C# 控制台应用程序,用于测试 URL 是否有效或有效。它适用于大多数 URL,并且可以从目标网站获得 HTTP 状态代码的响应。但是在测试其他一些 URL 时,应用程序在运行 HttpClient.SendAsync 方法时抛出“发送请求时发生错误”异常。因此,即使此 URL 在浏览器中实际运行,我也无法获得任何响应或 HTTP 状态代码。我很想知道如何处理这个案子。如果 URL 不起作用或服务器拒绝我的请求,它至少应该给我相应的 HTTP 状态代码。
这是我的测试应用程序的简化代码:
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace TestUrl
{
class Program
{
static void Main(string[] args)
{
// var urlTester = new UrlTester("http://www.sitename.com/wordpress"); // works well and get 404
// var urlTester = new UrlTester("http://www.fc.edu/"); // Throw exception and the URL doesn't work
var urlTester = new UrlTester("http://www.ntu.edu.tw/english/"); // Throw exception and the URL works actually
Console.WriteLine("Test is started");
Task.WhenAll(urlTester.RunTestAsync());
Console.WriteLine("Test is stoped");
Console.ReadKey();
}
public class UrlTester
{
private HttpClient _httpClient;
private string _url;
public UrlTester(string url)
{
_httpClient = new HttpClient();
_url = url;
}
public async Task RunTestAsync()
{
var httpRequestMsg = new HttpRequestMessage(HttpMethod.Head, _url);
try
{
using (var response = await _httpClient.SendAsync(httpRequestMsg, HttpCompletionOption.ResponseHeadersRead))
{
Console.WriteLine("Response: {0}", response.StatusCode);
}
}
catch (Exception e)
{
}
}
}
}
}
【问题讨论】:
标签: c# .net http dotnet-httpclient