19

vb.net の webrequest クラスを使用して、 「 http://www.google.com/?q=random 」のようなページをリクエストしようとしています。ファイアウォールの内側にいるため、リクエストを認証する必要があります。資格情報を追加することで、認証部分を通過しました。しかし、それが機能すると、リダイレクトループに入るようです。

これがなぜなのか、アイデア、コメント、提案がある人はいますか? 他の誰かがこの問題を経験しましたか?

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

4 に答える 4

44

Cookie コンテナーがセットアップされていることを確認してください。

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

Cookie が保存されておらず、リダイレクト ループに陥っている可能性があります。

于 2009-02-05T22:16:53.483 に答える
8
loHttp.AllowAutoRedirect = true

これの代わりに、使用する必要があります

loHttp.AllowAutoRedirect = False

エラーを避けるために

「試行された自動リダイレクトが多すぎます」

于 2012-11-01T10:59:03.677 に答える
2

Darryl が提供した C# を VB に翻訳し、getResponse 呼び出しの前に挿入しました。

Dim cookieContainer As CookieContainer = New CookieContainer()
loHttp.CookieContainer = cookieContainer
loWebResponse = loHttp.GetResponse()
于 2009-02-05T22:32:52.467 に答える
0

おそらく、応答から Location を取得し、適切な Cookie を使用することで、リダイレクトごとに個別に処理できます。

于 2012-03-04T06:34:43.113 に答える