2012-09-10 3 views
0

나는 rapidshare, extabit, turbobit ...와 같은 파일 hosters에서 링크의 가용성을 확인하기위한 것입니다. 아래 코드는 항상 링크가 실제로 유효하기 때문에 HttpStatusCode "OK"를 반환하지만 링크 안의 파일을 사용할 수 없거나 파일이 없습니다. 거기에 어떤 서비스에 의해 제공되는 API를 사용하지 않고 원하는 것을 확인하는 방법이 있나요, 내가 의미하는 .Net을 사용하는 방법은 내가 원하는 것을하게 할 것입니까?Winforms link checker

private bool LinkChecker(string url) 
    { 
     string result = string.Empty; 
     Uri urlCheck = new Uri(url); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlCheck); 
     request.Timeout = 15000; 

     HttpWebResponse response = null; 
     try 
     { 
      response = (HttpWebResponse)request.GetResponse(); 
     } 
     catch (Exception err) 
     { 
      return false; 
     } 


     switch ((HttpStatusCode)response.StatusCode) 
     { 
      case HttpStatusCode.OK: 
       result = "Ok"; 
       break; 
      case HttpStatusCode.BadGateway: 
       result = "No Internet"; 
       break; 
      case HttpStatusCode.Forbidden: 
       result = "Link Not Found"; 
       break; 
      case HttpStatusCode.NotFound: 
       result = "Link Not Found"; 
       break; 
     } 

     if (result == "Ok") 
      return true; 
     else 
      return false; 
    } 

답변

2

정말 hoster에 따라 다릅니다.

일부 호스트 사용자는 적절한 코드로 HTTP 응답을 반환하지만, 내 경험에 따르면 대부분의 응답자는 항상 200 OK를 반환합니다. 페이지/파일을 찾을 수 없더라도 대부분의 웹 사이트는 항상 200 OK를 반환합니다. 당신이 텍스트 "filenotfound"를 포함하는 것 (새로운 URL을 사용할 수 있도록

일부 스터 반환

.,는 "파일을 찾을 수 없습니다"페이지로 리디렉션 HTTP하지만 갈 수있는 가장 일반적인 방법으로 생각 응답 본문의 특정 텍스트를 찾습니다. 즉, 높은 확률로 각 호스팅에 대해 서로 다른 텍스트를 찾을 것을 의미합니다,하지만 난 정말 다른 방법이 표시되지 않습니다.

는 희망이 도움이! :-)

+0

응답 본문을 살펴 보려고합니다. 실제로 응답 헤더를 검사하지만 본문은 검사하지 않습니다. 감사. – ykh

+0

당신의 방식은 실제로 아주 천천히 일하지만 100 % 일하는 현명한 일을합니다. 모든 경우를 다루기 만하면됩니다. 대단히 고마워. 늦은 응답에 대한 죄송합니다 :) – ykh