【lib】WinHttp库

更新日志:

  2021.08.18
  修复响应头的 Set-Cookie 总是被改变为 Cookie 的问题。
  版本号3.6

  2021.08.16
  修复请求头行首包含空白符会被错误解析的问题。
  增加 Cookie 的快速获取。
  版本号3.5

  2021.04.11
  集成 CreateFormData 函数。
  集成 BinArr 系列函数。
  版本号为3.2

  2021.04.05
  修正部分 URL ( http://snap.ie.sogou.com ),请求头重复添加 Connection: Keep-Alive 的问题。
  添加默认 User-Agent 。
  gzip 解压目前只找到了32位的 dll ,所以还是用老方法解决 gzip 压缩数据的问题。
  版本号为3.1

  2021.04.04
  代码重构。
  版本号为3.0

  2020.08.18
  请求头可直接使用响应头中的“Set-Cookie”值,会自动处理为“Cookie”。
  小幅修改说明。
  版本号为2.0

  2020.08.16
  如果 “Accept-Encoding” 中含有关键词“gzip”,则选项将被自动删除,以避免服务器发送gzip压缩数据回来,无法解压而导致乱码的问题。
  “Msxml2.XMLHTTP” 可以自动解压gzip数据。https://www.autohotkey.com/boards/viewtopic.php?f=76&t=51629&hilit=gzip
  “Msxml2.XMLHTTP” “Msxml2.ServerXMLHTTP” “WinHttp.WinHttpRequest.5.1” 功能都差不多,2是对3的进一步封装,1和2封装的dll不同,因此只有1能自动解压gzip数据。
  版本号为1.6

  2016.01.23
  ----------------------------------------------------------------------------------------------
  Timeout存在一些诡异。

  图片挖掘机访问一些未知链接,超时不设置时。
  会一直访问,永不返回,于是程序就没任何反应了。

  访问google。
  WaitForResponse(5),SetTimeouts(0, 3000, 30000, 30000)
  将在3秒后超时返回,即后者生效。
  WaitForResponse(3),SetTimeouts(0, 5000, 30000, 30000)
  将在3秒后超时返回,即前者生效。
  WaitForResponse(-1),SetTimeouts(0, 5000, 30000, 30000)
  将在5秒后超时返回,即后者生效。
  WaitForResponse(-1),SetTimeouts(0, 60000, 30000, 30000)
  将在21秒后超时返回,原因未知!

  下载一个几m大的文件。
  WaitForResponse(-1),SetTimeouts(0, 2000, 2000, 3000)
  将在30秒后返回正确的文件,即前者生效(可能的原因是接收了1个字节后,SetTimeouts最后一个参数的timeout就不生效了)。
  WaitForResponse(50),SetTimeouts(0, 2000, 2000, 3000)
  将在30秒后返回正确的文件,即前者生效。
  WaitForResponse(10),SetTimeouts(0, 2000, 2000, 3000)
  将在10秒后超时返回,即前者生效。
  WaitForResponse(10),SetTimeouts(0, 20000, 20000, 30000)
  将在10秒后超时返回,即前者生效。
  ----------------------------------------------------------------------------------------------

  2016.01.23
  修改超时设置,可以指定任意时长的超时。
  版本号为1.5

  2015.09.12
  优化代码结构。
  版本号为1.4

  2015.09.11
  修正超时会在错误时间被激活的问题。(https://www.autohotkey.com/boards/viewtopic.php?t=9137)
  以下是tmplinshi对这个问题的详细描述。
  版本号为1.3

  2015.06.05
  添加静态变量Status、StatusText,用法和ResponseHeaders一致。
  添加新功能,若指定状态码与重试次数,将重试n次,直至状态码与预期一致。
  版本号为1.2

已知问题:
  cookie 没有实现像浏览器那样根据属性值自动管理。但是你可以在需要的时候随时取出,自行管理。
  请求头 Content-Type: 末尾会自动追加一个 Charset=UTF-8 (需使用 Fiddler 抓包查看)。

简单示例

MsgBox, % WinHttp.Download("https://www.example.com/")  ; 网页内容
  MsgBox, % WinHttp.ResponseHeaders["Content-type"]       ; 响应头 Content-type 段
  MsgBox, % WinHttp.StatusCode                            ; 状态码
  MsgBox, % WinHttp.Cookie                                ; Cookie

  objParam := {"file": ["截图.png"]}                      ; CreateFormData 示例
  WinHttp.CreateFormData(out_postData, out_ContentType, objParam,,,"image/jpg")
  RequestHeaders := "Content-Type: " out_ContentType
  MsgBox, % WinHttp.Download("http://snap.ie.sogou.com/recognition",, RequestHeaders, out_postData)

注:源码下载链接在右侧

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

查看演示

  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余

给TA捐赠
共{{data.count}}人
人已捐赠
AHKV1游戏

多线程显示血量-萌新2号

2021-10-19 15:06:55

AHKV1案例类和函数库

【func】ping库

2021-10-20 10:07:49

8 条回复 A文章作者 M管理员
  1. DuyMinh93

    谢谢,我将尝试。

  2. 凹凸曼

    大佬好,winhttp.ahk最后的
    #Include %A_LineFile%..NonNull.ahk
    #Include %A_LineFile%..GlobalRegExMatch.ahk
    找不到啊

  3. gdzrh917

    河大大,这个库支持异步并发吗?好像目前没找到方法

  4. AkiraMing

    大佬,最后面NonNull.ahk没有找到

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索