2009-09-08 18 views
17

WebRequest का उपयोग करते हुए मैं अगर मैं एकमैं 302 प्रतिक्रिया के लिए कैसे जांच करूं? WebRequest

मिल जानना चाहता हूँ "302 अस्थायी रूप से स्थानांतरित"

प्रतिक्रिया के बजाय स्वचालित रूप से नए यूआरएल मिलता है।

+0

.NET के लिए? जावा? MSX? –

+3

WebRequest एक .NET क्लास है। – jimyi

+0

असल में टैग कोड के बारे में सबकुछ कहते हैं। – Tarik

उत्तर

32

होना चाहिए आप के बजाय यह स्वचालित रूप से करने के लिए falseWebRequest बना सकते हैं और AllowAutoRedirect गुण सेट निम्न में से, एक रीडायरेक्ट प्रतिक्रिया का पता लगाने चाहते हैं:

HttpWebRequest request = WebRequest.Create(someUrl) as HttpWebRequest; 
request.AllowAutoRedirect = false; 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
if (response.StatusCode == HttpStatusCode.Redirect || 
    response.StatusCode == HttpStatusCode.MovedPermanently) 
{ 
    // Do something here... 
    string newUrl = response.Headers["Location"]; 
} 
+1

का उपयोग करके मुझे क्या दिया है, मैंने कॉपी/चिपकाया है, मैंने इसे स्वयं सत्यापित नहीं किया है, लेकिन मुझे बस कुछ कह रहा है: "यदि HttpWebRequest.AllowAutoRedirect संपत्ति है झूठी, HttpStatusCode.Found एक अपवाद फेंकने का कारण बन जाएगा। " स्रोत: http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.htm –

+0

@ नाथन: मैं वास्तव में नहीं देखता कि कैसे, HttpStatusCode एक enum है। लिंक किए गए दस्तावेज़ ('.html' बीटीडब्लू में समाप्त होने की आवश्यकता है) पुराना प्रतीत होता है; वह वाक्य शायद एक कट-पेस्ट बग था। – devstuff

+0

बीटीडब्ल्यू, आप HttpStatusCode.Redirect (302 के लिए अन्य उपनाम) का भी उपयोग कर सकते हैं, जो थोड़ा और स्पष्ट है। – devstuff

3

की तरह तो:

HttpWebResponse response; 
int code = (int) response.StatusCode; 

कोड

HttpStatusCode.TemporaryRedirect 
+1

HttpStatusCode.TemporaryRedirect एक 307 है। Http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.html#TemporaryRedirect –

+0

अब मैं रिस्पॉन्स कोड देख सकता हूं, लेकिन यह अभी भी रीडायरेक्ट करता है और मुझे 'ओके' देता है –

+0

@ नाथन टेलर: मैंने कर्ल-आई "यूआरएल" –

1

वीबी नेट कॉड ई

Function GetRealUrl(someUrl As String) As String 
     Dim req As HttpWebRequest = TryCast(WebRequest.Create(someUrl), HttpWebRequest) 
     req.AllowAutoRedirect = False 
     Dim response As HttpWebResponse = TryCast(req.GetResponse(), HttpWebResponse) 
     If response.StatusCode = HttpStatusCode.Redirect OrElse response.StatusCode = HttpStatusCode.MovedPermanently Then 
      ' Do something... 
      Dim newUrl As String = response.Headers("Location") 
      getrealurl = newUrl 
     Else 
      getrealurl = someUrl 
     End If 
End Function 
संबंधित मुद्दे