本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
//URLに何か入っているようだったらチェック
if (t_url.Text != "")
{
//URLの頭にhttpが入っていない場合は付け加える
if (!t_url.Text.StartsWith("http://") & !t_url.Text.StartsWith("https://"))
t_url.Text = "https://" + t_url.Text;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(t_url.Text);
request.Method = "HEAD";
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
{
MessageBox.Show("ご指定のURLでは、ホームページを開く事ができませんでした。", "URLエラー", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\nご指定のURLでは、ホームページを開く事ができませんでした。", "URLエラー", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
前提として t_url というテキストボックスがあります。
その中にURLが入力されているという前提です。最初のtryで、名前解決ができないようなURLだった場合、エラー処理ではじきます。
名前解決が出来た場合、飛び先のURLが無い場合は、response.StatusCodeで判定しています。
404を返すようなページ
404 NOT FOUND | オレンジの国
日々勉強しているITの知識をまとめています。
という存在しないURLにアクセスすると
上記コードでどのようになるかというと、
この try catchしたエラー内容を返します。
想定では、
if (response.StatusCode != HttpStatusCode.OK)
この判定に入る予定でしたが、その前時点、
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
こちらの方でエラーを吐いてくれるようです。とりあえず目的は達成しているのでよしとします。
認証が必要なページかを判断する
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(t_url.Text);
request.Method = "HEAD";
try
{
//このコードで、404の時も 例外処理が走る
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// ↓このif文が走る場合があるか?分からない
if (response.StatusCode != HttpStatusCode.OK)
{
MessageBox.Show("ご指定のURLでは、ホームページを開く事ができませんでした。", "URLエラー", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
catch (WebException ex)
{
if(ex.Response is HttpWebResponse errorResponse)
{
if(errorResponse.StatusCode == HttpStatusCode.Unauthorized)
MessageBox.Show(ex.Message + "\nご指定のURLにはベーシック認証が必要です。", "注意", MessageBoxButton.OK, MessageBoxImage.Exclamation);
else if(errorResponse.StatusCode == HttpStatusCode.NotFound)
{
MessageBox.Show(ex.Message + "\nご指定のURLでは、ホームページを開く事ができませんでした。", "URLエラー", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
else
{
MessageBox.Show(ex.Message + "\nご指定のURLでは、ホームページを開く事ができませんでした。", "URLエラー", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}