原因是你試圖打的網站正在尋找一個cookie,如果它沒有設置它嘗試設置它,然後做一個302重定向回它自己。
由於您沒有連接Cookie管理器,因此網站不斷檢查cookie,設置並重定向,最終導致302重定向循環。
處理cookie和不過似乎由於某種原因,印地無視正在本網站發送的cookie會工作得很好,只有一個302
。我颳起了一些測試代碼,如果我打http://www.google.com我得到
New cookie: PREF
New cookie: NID
Redirecting (1) to: http://www.google.co.nz/
New cookie: PREF
New cookie: NID
這是谷歌發送
Set-Cookie: PREF=ID=3c7e441914b902ae:TM=1268686477:LM=1268686477:S=Z-Gwqx52jK0V1rYR; expires=Wed, 14-Mar-2012 20:54:37 GMT; path=/; domain=.google.com
Set-Cookie: NID=32=vsOZvkr4AOZ7320d_OBPf2zR2jau4E6pupbOe_ZaaX4DNjahTzSV-mSA55naTk-5cXQcn7SNEp7uSxbE_cFrL9ZftGApTGZMPGKzcz3_NZE_2MYpWG5PGbwWFw9t2d_R; expires=Tue, 14-Sep-2010 20:54:37 GMT; path=/; domain=.google.com; HttpOnly
但是對於其他網站的標題,我得到這個在我的調試輸出
Redirecting (1) to: http://www.chefscatalog.com/error.aspx?impsid=0
Redirecting (2) to: http://www.chefscatalog.com/error.aspx?impsid=0
一路高達15嘗試.. 如果我們看看網站發回什麼標題
Set-Cookie: ASP.NET_SessionId=4o0bpi45evee0d45qos1uy55; path=/; HttpOnly
Set-Cookie: ChefsSite=CartID=00000000-0000-0000-0000-000000000000&cst=f4t8YpBpAAkNiRUd9BEf2luKAA%3d%3d&act=c0f2VBCSbv30F4kasnvWS5OfJQ%3d%3d&CookiesEnabled=False; expires=Wed, 14-Apr-2010 20:54:22 GMT; path=/
我注意到那裏的網站缺少Set-Cookie結束的域名,這很奇怪,但我不認爲它是RFC的必須。如果我們看一下idCookieManager的AddCookie/2方法,它需要該參數的主機,所以它可能不適用於任何不提供域的Set-Cookies。
我已經在更多的網站上測試了這一點,所有的工作都很好,如果Set-Cookie包含domain = .google.com;
這也是有趣的是,在idHttp.OnRedirect如果你看看
idHttp.Response.RawHeaders.Text
爲不工作,你看不到套裝 - 現場餅乾,但是,網站,做的工作你看到的Set-餅乾...
但是,如果我設置idhttp用戶代理到
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.1) Gecko/20100122 firefox/3.6.1
(從另一個答案)
那麼似乎皮卡餅乾就好
New cookie: ASP.NET_SessionId
New cookie: ChefsSite
Redirecting (1) to: http://www.chefscatalog.com/international/home.aspx
New cookie: ChefsSite
奇怪。
那麼,它是做什麼的,而不是抓取URL?它是否引發異常?哪一種?你有沒有得到一個HTTP狀態碼?哪一個? – 2010-03-12 05:45:40
'「這段代碼無法獲取error_url,但是如果您將error_url更改爲其工作的任何有效url」',那麼您還會期待什麼?相反(一個錯誤的URL工作和一個有效的網址不會)是奇怪的,不是嗎? – 2010-03-12 08:15:25
@PA:該URL現在至少是一個有效的URL,並且服務器愉快地返回一個帶有頁面的200 OK。所以我想在OP的問題中「有效的URL」是一個類型錯誤。 – 2010-03-12 08:53:30