2012-01-18 31 views
3

WebClient.DownloadString(url)を使用してWebページをダウンロードしていますが、url 404 Webページが停止してもう動作しません。 このエラーが発生したときに、これらのページをスキップします。WebClient.DownloadString(url)このURLが404ページを返すとき、どうすればこのページをスキップできますか?

URLが404ページの場合、ダウンロードを開始しません。だから私はアンロードされたデータを解析できません...

+2

「のC#」などを使用してタイトルを接頭辞ないでください。それがタグのためのものです。 –

答えて

11

あなたは404の例外とテストをキャッチする必要があります。

try 
{ 
    string myString; 
    using (WebClient wc = new WebClient()) 
     myString= wc.DownloadString("http://foo.com"); 

} 
catch (WebException ex) 
{ 
    if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null) 
    { 
     var resp = (HttpWebResponse)ex.Response; 
     if (resp.StatusCode == HttpStatusCode.NotFound) // HTTP 404 
     { 
      //the page was not found, continue with next in the for loop 
      continue; 
     } 
    } 
    //throw any other exception - this should not occur 
    throw; 
} 
+0

私は私のプロジェクトでこの答えを試しました。 404でエラーが発生するとクラッシュします。スローを取り除くだけですか?またはそれに近づくよりエレガントな方法があります。 – Decoder94

0

あなたのコードをTry...Catchブロックに置き、WebExceptionをキャッチすることができます。特定のエラーを処理する方法をさらに制御したい場合は、WebExceptionのStatusプロパティを使用してWebExceptionStatus列挙型を返すことができます。

関連する問題