2010-07-16 20 views
20

Voy a suponer que la respuesta es no, pero ... ¿Hay alguna manera de usar WebClient para enviar el método HEAD y devolver los encabezados como una cadena o algo similar?HEAD con WebClient?

Respuesta

17

Tiene usted razón WebClient no es compatible con esto. Puede utilizar HttpWebRequest y establecer el método para la cabeza si desea que esta funcionalidad:

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

mayoría de los servidores web que solicito a partir aceptará este método. Sin embargo, no todos los servidores web lo hacen. IIS6, por ejemplo, respetará el método de solicitud A VECES.

Este es el código de estado que se devuelve cuando no se permite un método ...

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

Gracias, Mike

+0

Esto no responde a la pregunta de si WebClient admite el envío de una solicitud HEAD. –

14

Otra forma es heredar de cliente Web y anular 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 como webclient es mucho más fácil de usar. –

+1

Para un novato, ¿cómo puedo llamar a esta clase invalidada? – bendecko

+0

'var wc = new ExWebClient();' en lugar de 'var wc = new WebClient();' – tomfanning