kxing 发表于 2013-8-27 00:12:33

[已解决]请教获取跳转网址的文件名

本帖最后由 kxing 于 2013-8-27 08:25 编辑

请教这类跳转网址能和IE那样获取到文件名吗?
http://www.xdowns.com/soft/xdowns2009.asp?softid=60680&downid=49&id=63529
谢谢!

komaau3 发表于 2013-8-27 02:38:46

回复 1# kxing Global $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Option(0) = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN)"
$oHTTP.Option(4) = 13056 ;忽略错误标志
$oHTTP.Option(6) = False ;禁用重定向
$oHTTP.SetTimeouts(30000, 30000, 30000, 30000)

Local $sUrl, $sBody

$sUrl = "http://www.xdowns.com/soft/xdowns2009.asp?softid=60680&downid=49&id=63529"

$oHTTP.Open('GET', $sUrl, True)
$oHTTP.Send()
$sBody = waitResponse()
ConsoleWrite($sBody & @CRLF)

$sUrl = $oHTTP.getResponseHeader("Location")

Local $sName = StringTrimLeft($sUrl, StringInStr($sUrl, "/", 0, -1))

MsgBox(0, 0, "下载链:" & $sUrl & @CRLF & @CRLF & "文件名:" & $sName)


Func waitResponse($i_Time = -1, $b_Bin = False)
        Local $s_Header = ""
       
        If Not $oHTTP.WaitForResponse($i_Time) Then
                $oHTTP.Abort()
                Return SetError(1, 0, "")
        EndIf
        If $b_Bin Then Return $oHTTP.responseBody
       
        $s_Header = $oHTTP.GetResponseHeader("Content-Type")
       
        If StringInStr($s_Header, "gb2312") Or StringInStr($s_Header, "gbk") Then
                Return BinaryToString($oHTTP.responseBody, 1)
        Else
                Return BinaryToString($oHTTP.responseBody, 4)
        EndIf
EndFunc   ;==>waitResponse

kxing 发表于 2013-8-27 08:25:09

真乃高人啊,请问下有关于oHTTP的属性和方法的说明文档吗?

komaau3 发表于 2013-8-27 20:52:03

回复 3# kxing

MSDN把 不理解的配合百度搜索下

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384106(v=vs.85).aspx

skylyydia 发表于 2013-9-2 13:25:34

學習了~謝謝~很有用~
页: [1]
查看完整版本: [已解决]请教获取跳转网址的文件名