http://www.im286.com/viewthread.php?tid=1550010&extra=page%3D1
其實這個問題落伍談了n次了
其中care4也說了兩次所以如果你有問題最好先搜索一下 說不定問題早有人解決了
http://www.im286.com/viewthread. ... ;highlight=%2Bcare4
http://www.im286.com/viewthread. ... ;highlight=%2Bcare4
care4的代碼有一個小缺點 就是需要組件。
第一個是.net組件 二不是 但用組件始終不太方便有沒有asp直接獲取的方式呢
答案是有的
我寫的一個vb簡單的winsock獲取的代碼
http://www.im286.com/viewthread. ... t=Response.redirect
當時我說用asp好像不能獲得,那是當時沒有去csdn混去,現在搞定了
首先我們要了解為什么xmlhttp組件無法獲得這樣的跳轉真實地址
用Response.Redirect跳轉,PHP里面是Header("Location",$URL);
這兩種方式都是一樣的原理,就是在輸出的HTTP頭里面加上一個Location字段
同時把返回的HTTP狀態值設為302,瀏覽器就會認為當前請求的頁面已經
被移動到Location指定的路徑
那么為什么xmlhttp無法獲得呢?
原因很簡單
XMLHTTP組件在處理包含Location頭的302消息時太智能了,直接給跳轉到最后的頁面,也就是說~我們看不到中間的過程!比爾自作聰明阿 !
不過還好MSXML4里面提供了一個可用的新的組件:WinHttp.WinHttpRequest.5.1,這個也是MSXML4 XMLHTTP組件的核心。 WinHttp.WinHttpRequest有一個十分關鍵的屬性:Option,這個屬性的第六個索引就是指示是否自動跳轉,然后就可以輕松的使用XMLHTTP組件的getResponseHeader和getAllResponseHeaders方法來獲取返回的HTTP頭信息了。
好接下來就看代碼了
Dim oHttp
Set oHttp=Server.CreateObject("WinHttp.WinHttpRequest.5.1"
oHttp.Option(6)=0 '禁止自動Redirect,最關鍵的 剩下的就簡單讀取數據都估計大家都會
oHttp.SetTimeouts 5000,5000,30000,5000 '設置超時~和ServerXMLHTTP組件一樣
oHttp.Open "GET",sUrl,False '以同步模式打開URL
If oHttp.Status<>200 And oHttp.Status<>302 Then
'oHttp.Status對應返回的HTTP狀態,如果是200,表示這個就是最終頁面,沒有Location跳轉
'如果是302,表示當前請求的URL已經被移動,需要根據HTTP頭來跳轉
'對于其他數值的狀態,基本上我們不要處理,但是你要處理也可以比如 440或者別的狀態你自己處理就可以了!
Else
'在這里對返回的HTTP頭和文檔內容進行處理
End If
好了比較完整的代碼比較長
我傳了個到空間上自己看去
http://test.aymtv.com/url.asp
默認的輸入欄里的代碼是crsky的一個下載地址你可以測試一下就知道了
點查看源代碼就可以看見這個asp文件的源代碼!
一切搞定 over 繼續去csdn混分去了
新聞熱點
疑難解答