HEAD?

2010-07-16 10 views
20

मुझे लगता है कि उत्तर नहीं है .... क्या हेड विधि भेजने के लिए वेब क्लाइंट का उपयोग करने और हेडर को एक स्ट्रिंग या कुछ समान के रूप में वापस करने का कोई तरीका है?HEAD?

उत्तर

17

आप सही हैं वेब क्लाइंट इसका समर्थन नहीं करता है। आप HttpWebRequest का उपयोग करें और सिर के लिए विधि सेट करता है, तो आप इस कार्यक्षमता चाहते हैं कर सकते हैं:

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

अधिकांश वेब सर्वर मैं से अनुरोध है कि इस विधि को स्वीकार करेंगे। हालांकि हर वेब सर्वर नहीं करता है। आईआईएस 6, उदाहरण के लिए, अनुरोध विधि कुछ समय का सम्मान करेगा।

यह स्थिति कोड है कि एक विधि की अनुमति नहीं है जब लौटे है ...

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

एक और तरीका है WebClient से विरासत और 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 exWebClient();' var wc = new webClient() के बजाय '' – tomfanning

संबंधित मुद्दे