2009-02-05 1 views
18

Я пытаюсь запросить страницу типа «http://www.google.com/?q=random», используя класс webrequest в vb.net. мы за брандмауэром, поэтому мы должны аутентифицировать наши запросы. Я прошел мимо части аутентификации, добавив свои учетные данные. Но как только это работает, похоже, он переходит в цикл перенаправления.«слишком много попыток автоматического перенаправления были предприняты» при использовании httpWebRequest в .NET

У кого-нибудь есть идеи, комментарии, предложения, почему это так? У кого-нибудь еще возникла эта проблема?

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() 

ответ

41

Убедитесь, что у вас есть настройка контейнера для печенья.

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

Возможно, вы не храните куки и не попали в цикл переадресации.

+0

да, это полностью верно. Благодарю. – tooleb

+0

Это только спасло меня от часов боли и страданий! Большое спасибо! : D – Maritim

2

Я перевел C#, который Даррил предоставил VB, и вставил его перед вызовом getResponse.

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

Возможно, вы можете индивидуально обработать для каждого перенаправления, догнав местоположение от ответа и использовать подходящие файлы cookie.

7
loHttp.AllowAutoRedirect = true 

Вместо этого, вы должны использовать

loHttp.AllowAutoRedirect = False 

, чтобы избежать ошибки ошибки

"СЛИШКОМ МНОГО AUTOMATIC ПЕРЕКВАЛИФИКАЦИИ предпринималась попытка"

+0

Это неверно. [Документация MSDN] (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.allowautoredirect (v = vs.110) .aspx) для свойства 'HttpWebRequest.AllowAutoRedirect': Установите 'AllowAutoRedirect' в значение * true *, если вы хотите, чтобы запрос автоматически следил за заголовками перенаправления HTTP в новое местоположение ресурса. Максимальное количество перенаправлений, которое необходимо выполнить, задается свойством MaximumAutomaticRedirections'. Вышеупомянутая ссылка предназначена для .NET 4.5, но документы говорят то же самое, что и до 2.0. – David

+0

В некоторых случаях вам нужно установить значение «false», если появляется эта ошибка. – fgalarraga

+0

Кажется, что это «работает», потому что на самом деле не выполняется автоматическое перенаправление, оно просто останавливается на первой странице. Поэтому в зависимости от того, что вы хотите, будет определяться, правильно ли этот ответ. Это не ** приведет вас к тому же местоположению, в которое вы попадете. – Jim

Смежные вопросы