お問い合わせ

tel:0570-046-503

営業時間 10:00~17:00(定休日:土日祝日)

C#でリンクチェックをおこなう

   2015/08/04

C#で特定のURLのリンクチェックを行う場合は、

HTTPRequest時のステータスコードで判断すると良いかと思います。


ここでは、URLを引数に受け取ってステータスコードを返す関数を紹介します。

         /// <summary>
        /// ステータスコードを取得する
        /// </summary>
        /// <param name="url">URL</param>
        /// <returns>ステータスコードの列挙対</returns>
        public static HttpStatusCode GetStatusCode(string url)
        {

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse res = null;
            HttpStatusCode statusCode;

            try
            {
                res = (HttpWebResponse)req.GetResponse();
                statusCode = res.StatusCode;

            }
            catch (WebException ex)
            {

                res = (HttpWebResponse)ex.Response;

                if (res != null)
                {
                    statusCode = res.StatusCode;
                }
                else
                {
                    throw; // サーバ接続不可などの場合は再スロー
                }
            }
            finally
            {
                if (res != null)
                {
                    res.Close();
                }
            }
            return statusCode;
        }


HTTPWebResponse.GetResponse()でURLのコンテンツを取得しようとした場合、

リンクエラーのときは、例外WebExceptionが発生します。

WebException内で例外のレスポンスコード(URLが存在しない場合は404)が返されます。

呼び出しもとのメソッドレスポンスコードを確認し、nullの場合はリンクエラーが

が無いということになります。


ただし、HttpWebRequest,HttpWebResponseを用いたリンクチェックは

負荷がかかるため時間がかかります。

連続して大量にメソッドを呼び出すと、フリーズしてしまうので注意してください。

  • ブログランキング・にほんブログ村へ
  • FC2ブログランキングへ
  • 人気ブログランキングへ
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)