본문 바로가기
C++ 200제/코딩 IT 정보

C# URL 웹페이지 존재 확인 (WebBrowser.Url - HTML)

by vicddory 2017. 7. 15.

C# URL 웹페이지 존재 확인 (WebBrowser.Url - HTML)


회사 이윤 창출을 위해 손가락을 놀리던 중, 특정 페이지가 존재하는지 확인할 필요가 생겼습니다. (C# URL 웹페이지 존재 확인 (WebBrowser.Url)) 일명 URL이 깨졌는지 안 깨졌는지 확인하는 과정인데, 블로그를 예로 들어 특정 페이지가 삭제되었다면 그 주소를 사용자에게 알려주는 것이죠.


여러 웹사이트를 운영하는 관리자에겐 특정 URL이 접근하지 못한다거나 사이트가 없어졌다고 알려주는 겁니다. 즉, 웹페이지가 존재하지 않는다면 존재하지 않는다 알려주는 겁니다.


처음엔 어렵게 생각했는데 HttpWebRequest를 사용하면 쉽게 알아낼 수 있습니다.


아래 소스 보시죠.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    HttpWebRequest request = null;
    HttpWebResponse response = null;
 
    string url = "http://example.com";
 
    try
    {
        request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "HEAD";
 
        response = request.GetResponse() as HttpWebResponse;
 
        lbox_used_url.Invoke(new MethodInvoker(delegate
        {
            lbox_used_url.Items.Add(url);
        }));
    }
    catch
    {
        lbox_removed_url.Invoke(new MethodInvoker(delegate
        {
            lbox_removed_url.Items.Add(url);
        }));
 
        Console.WriteLine(url);
    }
        
    response.Close();
    response.Dispose();
    request.Abort();
}
cs


10번 : WebRequest에 새로운 연결을 만듭니다.

11번 : 특정 URL, 즉 웹페이지가 존재하는지는 HEAD 태그를 확인하면 됩니다.

13번 : 페이지에 연결 요청을 하고 결과를 받습니다.

27번 : 웹페이지가 없다면, URL이 깨졌다면 catch문으로 이동하며 콘솔로 알려줍니다.


C# URL 웹페이지 존재 확인 (WebBrowser.Url)[C# URL 웹페이지 존재 확인 (WebBrowser.Url)]


이 과정을 거쳐 HttpWebResponse와 HttpWebRequest 객체를 해제합니다. 만약, 반복문에서 위 소스를 실행시키려면 request.Abort()는 반복적으로 호출해야 합니다. 그래야 새로운 연결이 계속 이어지니깐요.


C# URL 웹페이지 존재 확인 (WebBrowser.Url - HTML)

댓글