嗨,我有一个正在某些页面上查找的程序
for (int i=1; i < 1000; i++)
{
string id = i.ToString();
string url_source = get_url_source("http://mysite.com/"+id);
}
和方法
public static string get_url_source(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream());
return sr.ReadToEnd();
}
我应该如何更改我的方法,以便主程序在发生 404-notfound 时跳过该 url 并继续到下一个 id?
我把循环改成了这样
try
{
string url_source = get_url_source(url);
}
catch(WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
ConsoleBox.Text += i + ": " + WebExceptionStatus.ProtocolError.ToString() + "\r\n";
continue;
}
else
{
throw;
}
}
最佳答案
捕获错误并检查其状态。如果是 404 - 继续循环,否则重新抛出。
for (int i=1; i < 1000; i++)
{
string id = i.ToString();
try
{
string url_source = get_url_source("http://mysite.com/"+id);
}
catch(WebException ex)
{
HttpWebResponse webResponse = (HttpWebResponse)ex.Response;
if (webResponse.StatusCode == HttpStatusCode.NotFound)
{
continue;
}
else
{
throw;
}
}
}
关于c# - 如何跳过 HttpWebResponse 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13915897/