2010-07-16 2 views
20

대답은 아니지만 ....라고 가정 할 것입니다. WebClient를 사용하여 HEAD 메서드를 보내고 머리글을 문자열 또는 이와 비슷한 것으로 반환하는 방법이 있습니까?HEAD with WebClient?

답변

17

당신이 맞아 WebClient가 이것을 지원하지 않습니다. 당신의 HttpWebRequest를 사용하고이 기능하려면 머리에 방법을 설정할 수 있습니다 :이 방법을 받아 들일 것입니다로부터 요청

System.Net.WebRequest request = System.Net.WebRequest.Create(uri); 
request.Method = "HEAD"; 
request.GetResponse(); 
3

대부분의 웹 서버를. 모든 웹 서버가 그런 것은 아닙니다. 예를 들어, IIS6은 요청 방법 인 SOMETIMES를 존중할 것입니다.

이 방법이 허용되지 때 반환되는 상태 코드는 ...

catch (WebException webException) 
      { 
        if (webException.Response != null) 
        { 
         //some webservers don't allow the HEAD method... 
         if (((HttpWebResponse) webException.Response).StatusCode == HttpStatusCode.MethodNotAllowed) 

감사합니다, 마이크

+0

WebClient가 HEAD 요청을 보낼 수 있는지 여부에 대한 질문에 대답하지 않습니다. –

14

또 다른 방법은 웹 클라이언트에서 상속 GetWebRequest(Uri address)을 무시하는 것입니다.

public class ExWebClient : WebClient 
    { 
     public string Method 
     { 
      get; 
      set; 
     } 

     protected override WebRequest GetWebRequest(Uri address) 
     { 
      WebRequest webRequest = base.GetWebRequest(address); 

      if (!string.IsNullOrEmpty(Method)) 
       webRequest.Method = Method; 

      return webRequest; 
     } 
    } 
+0

+1 웹 클라이언트가 훨씬 사용하기 쉽습니다. –

+1

초보자의 경우이 재정의 된 클래스를 어떻게 호출합니까? – bendecko

+0

'var wc = new WebClient(); 대신'var wc = new ExWebClient();' – tomfanning