2009-02-05 17 views
18

Tôi đang cố gắng yêu cầu một trang như "http://www.google.com/?q=random" bằng cách sử dụng lớp webrequest trong vb.net. chúng tôi đang đứng sau tường lửa, vì vậy chúng tôi phải xác thực các yêu cầu của chúng tôi. Tôi đã vượt qua phần xác thực bằng cách thêm thông tin xác thực của mình. Nhưng một khi nó hoạt động, nó dường như đi vào vòng lặp chuyển hướng."quá nhiều chuyển hướng tự động đã được thử" thông báo lỗi khi sử dụng httpWebRequest trong .NET

Có ai có ý tưởng, nhận xét, suggetions tại sao điều này không? Có ai khác gặp phải sự cố này không?

Dim loHttp As HttpWebRequest = CType(WebRequest.Create(_url), HttpWebRequest) 
loHttp.Timeout = 10000 
loHttp.Method = "GET" 
loHttp.KeepAlive = True 
loHttp.AllowAutoRedirect = True 
loHttp.PreAuthenticate = True 
Dim _cred1 As NetworkCredential = ... //this is setup 
//snip out this stuff 
loHttp.Credentials = _cc 
loWebResponse = loHttp.GetResponse() 

Trả lời

41

Đảm bảo bạn có thiết lập vùng chứa cookie.

CookieContainer cookieContainer = new CookieContainer(); 
loHttp.CookieContainer = cookieContainer; 

Có thể bạn không lưu cookie và bị kẹt trong vòng chuyển hướng.

+0

có, điều này hoàn toàn đúng. Cảm ơn. – tooleb

+0

Điều này vừa cứu tôi khỏi những giờ đau khổ và đau khổ! Cảm ơn rất nhiều! : D – Maritim

2

Tôi đã dịch C# mà Darryl cung cấp cho VB và chèn nó trước cuộc gọi getResponse.

Dim cookieContainer As CookieContainer = New CookieContainer() 
loHttp.CookieContainer = cookieContainer 
loWebResponse = loHttp.GetResponse() 
0

Có thể, bạn có thể xử lý riêng từng chuyển hướng bằng cách bắt kịp Vị trí từ phản hồi và sử dụng cookie phù hợp.

7
loHttp.AllowAutoRedirect = true 

Thay vì điều này, bạn phải sử dụng

loHttp.AllowAutoRedirect = False 

để tránh lỗi sai

"chuyển hướng TỰ ĐỘNG QUÁ NHIỀU toan tính"

+0

Điều này không đúng. [Tài liệu MSDN] (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.allowautoredirect (v = vs.110) .aspx) cho thuộc tính 'HttpWebRequest.AllowAutoRedirect' nêu rõ:" Đặt 'AllowAutoRedirect' thành * true * nếu bạn muốn yêu cầu tự động theo dõi các tiêu đề chuyển hướng HTTP đến vị trí mới của tài nguyên. Số lượng chuyển hướng tối đa cần tuân theo được đặt bởi thuộc tính' MaximumAutomaticRedirections'. " Các liên kết ở trên là dành cho .NET 4.5, nhưng các tài liệu nói cùng một điều tất cả các con đường trở lại 2.0. – David

+0

Trong một số trường hợp, bạn cần đặt điều này thành "false" nếu bạn có lỗi hiển thị. – fgalarraga

+0

Điều này dường như "hoạt động" vì nó không thực sự theo các chuyển hướng tự động, nó chỉ dừng lại trên trang đầu tiên. Vì vậy, tùy thuộc vào những gì bạn muốn xảy ra sẽ xác định nếu câu trả lời này là chính xác. Nó sẽ ** không ** đưa bạn đến cùng một vị trí mà trình duyệt sẽ đưa bạn đến. – Jim

Các vấn đề liên quan