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 提供给 VB 的 C# 并将其插入到 getResponse 调用之前。

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

也许,您可以通过从响应中获取位置并使用合适的 cookie 来单独处理每个重定向。

于 2012-03-04T06:34:43.113 回答