2009-09-08 20 views
17

WebRequest kullanma WebRequest Ben302 yanıtını nasıl kontrol ederim?

olsun bilmek istiyorum otomatik olarak yeni url almak ve

tepki yerine "302 geçici taşındı".

+0

.NET için? Java? MSX? –

+3

WebRequest bir .NET sınıftır. – jimyi

+0

Aslında etiketler kodla ilgili her şeyi söylüyor. – Tarik

cevap

32

olmalıdır:

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

Bunu kendim doğrulamadım, ancak bir şey buldum: "HttpWebRequest.AllowAutoRedirect özelliği" false, HttpStatusCode.Found, bir istisnanın atılmasına neden olur. " Kaynak: http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.htm –

+0

@Nathan: HttpStatusCode bir enum olduğu için gerçekten nasıl görmüyorum. Bağlı belgelerin ('.html' BTW içinde bitmesi gerekiyor) güncelliğini yitirmiş gibi görünüyor; Bu cümle muhtemelen kesme ve yapıştırma hatasıydı. – devstuff

+0

BTW, HttpStatusCode.Redirect'i (302 için başka bir diğer ad) kullanabilirsiniz, bu da biraz daha açık. – devstuff

3

böylece gibisin: yerine otomatik false için AllowAutoRedirect özelliği WebRequest oluşturmak ve set aşağıdakilerden bir yönlendirme yanıtı saptamak istiyorsanız

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

kod

HttpStatusCode.TemporaryRedirect 
+1

HttpStatusCode.TemporaryRedirect bir 307'dir. Http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.html#TemporaryRedirect –

+0

Şimdi yanıt kodunu görebilirim, ancak yine de yönlendirir ve bana 'Tamam' verir –

+0

@Nathan Taylor: CURL'nin curl -I "url" kullanarak bana verdiği şeyi kopyaladım/yapıştırdım –

1

VB Net Cod e

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 
İlgili konular