2

リンクが機能しない原因を調べたい。リンクが機能しない代わりに、404や403などの特定のメッセージを表示する必要があります。特定のリクエストが失敗した原因となったHTTPステータスを確認するにはどうすればよいですか?

if (!IsLinkWorking(link))
{
     //Here you can show the error. You don't specify how you want to show it.
     TextBox2.ForeColor = System.Drawing.Color.Green; 
     TextBox2.Text += string.Format("{0}\nNot working\n\n ", link);
}
else
{
     TextBox2.Text += string.Format("{0}\n working\n\n", link);
}
4

2 に答える 2

2

HttpWebRequestを使用する必要があります。これにより、StatusCodeプロパティを持つHttpWebResponseが返されます。こちらのドキュメントを参照してください

次に例を示します。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
if (response.StatusCode != HttpStatusCode.OK) {
    TextBox2.Text = "HTTP Response is: {0}", response.StatusDescription);
}
于 2013-03-09T06:37:52.770 に答える
1

リンクが機能しない理由はたくさんあります。適切なHTTPヘッダー値を使用して、リンクが機能するかどうかを確認できますWebClientHttpWebRequest / HttpWebResponse

403、404などのエラーの場合、処理する必要のある例外がスローされることに注意してください。そうしないと、応答ステータスが表示されません。

try{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    /* Set HTTP header values */
    request.Method = "MethodYouWantToUse"; // GET, POST etc.
    request.UserAgent = "SomeUserAgent";
    // Other header values here...

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    TextBox2.Text = "HTTP Response is: {0}", response.StatusDescription);

}
catch(WebException wex){
    if(wex.Response != null){
        HttpWebResponse response = wex.Response as HttpWebResponse;
            if (response.StatusCode != HttpStatusCode.OK) {
                TextBox2.Text = "HTTP Response is: {0}", response.StatusDescription);
            }            
    }
}
于 2013-03-09T09:04:13.623 に答える