1月22016
解压WinHttp返回gzip格式的数据流
写了个小程序,使用了WinHttp_GetRespond,但是返回数据格式是gizp压缩过的,Content-Encoding: gzip
怎么显示出明码呢,原来用xmlhttp是可以自动解压的,
winhttp如何让数据自动显示出来,谢谢~!
去官网down了个好东西,nb啊,作者Kudo这样写的,本来zlib是要dll的,然后作者写了个UDF,因为他穷开心,因为他会写
To use zLib in AutoIt, the easiest way is download the DLL, and then just use it by DllCall, or warp it by my
But now I convert zLib to machine code version UDF, because "just for fun", or because I can.
https://www.autoitscript.com/forum/topic/128962-zlib-deflateinflategzip-udf/
>> ZLIB_UDF下载 <<
#include<WinHttp.au3>
#include<zlib.au3>
$sURL = "http://abc.com/xyz.html" ;测试而以
$hOpen = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.3; .NET CLR 2.0.50727; ffco7) Gecko/2008092417 Firefox/3.0.3")
$hConnect = _WinHttpConnect($hOpen, $sURL)
;~ $hRequest = _WinHttpSimpleRequest($hConnect)
$aRequest = _WinHttpSimpleRequest($hConnect, Default,Default,Default,Default,'Accept-Encoding: gzip',1,2)
ConsoleWrite($aRequest[0]);
$charset = 0
If StringRegExp($aRequest[0], "(?im)^Content-Type:\h.*?charset\h*=\h*utf-?8") Then $charset = 4
If StringRegExp($aRequest[0], "(?im)^Content-Encoding:\h+gzip") Then
$sResponse = BinaryToString(_ZLIB_GZUncompress($aRequest[1]), $charset)
Else
$sResponse = BinaryToString($aRequest[1], $charset)
EndIf
MsgBox(0,"",$sResponse)
_WinHttpCloseHandle($aRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
扫描二维码,在手机上阅读
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!