我试图在ASP LINK FINDER应用
它的工作分为5个步骤
- 发送HTTP请求到服务器在www.foo.com
- 检查的请求状态
- 如果其200然后移动到第4步,否则显示错误
- 分析所有链接
-
Send http request to server to parsed link
我可以先做4步,但在面对第5步挑战
我得到3类型的链接
1)绝对链接: http://www.foo.com/file.asp
2)从根目录链接,这就需要域名如/folder2/file2.asp
3.)相链接:../file3.asp
挑战
当我请求www.foo.com,这是301重定向到www.foo.com/folder3/folder3/file3.asp
我得到重定向页面的HTML内容,不过不要让重定向的URL,而不是能够检查第三类型的链接
使用下面的代码
Set ServerXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") ServerXmlHttp.open "GET", "http://www.foo.com" ServerXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" ServerXmlHttp.send PostData If ServerXmlHttp.status = 200 Then //My CODE
希望快速响应......或在ASP链接取景任何其他的想法,vb.net
这是出了ServerXMLHTTP的能力。
相反,你必须使用IWinHttpRequest或其他第三方组件,它能够管理重定向。
在以下示例中, req.Option(WHR_URL)
返回即使重定向当前的URL。
选项req.option(WHR_EnableRedirects)
是True
默认像ServerXMLHTTP的。
所以,我添加注释掉展示如何禁用重定向线。
Const WHR_URL = 1
Const WHR_EnableRedirects = 6
'Enum constants are listed at http://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
Dim req
Set req = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
'req.Option(WHR_EnableRedirects) = False 'don't follow the redirects
req.open "GET", "http://www.foo.com", False
req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
req.send PostData
If req.Status = 200 Then
Response.Write "Last URL : " & req.Option(WHR_URL)
End If
文章来源: ServerXMLHTTP request returing data but not returning url of final page after 301 redirection