| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 网页_访问_对象 | 字节集 | 使用WinHttp的对象方式访问网页 | |||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 网址 | 文本型 | 完整的网页地址,必须包含http://或者https:// | 访问方式 | 整数型 | 0=GET 1=POST 2=HEAD 3=PUT 4=OPTIONS 5=DELETE 6=TRACE 7=CONNECT | 提交信息 | 文本型 | "POST"专用 自动UTF8编码 | 提交Cookies | 文本型 | 设置提交时的cookie | 返回Cookies | 文本型 | 返回的Cookie | 附加协议头 | 文本型 | 一行一个请用换行符隔开 | 返回协议头 | 文本型 | 返回的协议头 | 返回状态代码 | 整数型 | 网页返回的状态代码,例如:200;302;404等 | 禁止重定向 | 逻辑型 | 默认不禁止网页重定向 | 字节集提交 | 字节集 | 提交字节集数据 | 代理地址 | 文本型 | 代理地址,格式为 8.8.8.8:88 | 超时 | 整数型 | 秒|默认为15秒,-1为无限等待 | 代理用户名 | 文本型 | 用户名 | 代理密码 | 文本型 | 密码 | 代理标识 | 整数型 | 代理标识,默认为1,0为路由器 | 对象继承 | 对象 | 此处可自行提供对象,不再主动创建 | 是否自动合并更新Cookie | 逻辑型 | 默认为真,自动合并更新 | 是否补全必要协议头 | 逻辑型 | 当附件协议头为空时自动添加必要的UA协议头 默认为真,假将不再添加非传入协议头 | 是否处理协议头大小写 | 逻辑型 | 将协议头中的键名首字母处理为大写 默认为真 |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| 局_访问方式 | 文本型 | |||||
| 局_WinHttp | 对象 | |||||
| 局_发送协议头 | 文本型 | "0" | ||||
| 局_返回协议头 | 文本型 | "0" | ||||
| 局_计次 | 整数型 | |||||
| 局_网页数据 | 字节集 | |||||
| 局_变体提交 | 变体型 | |||||
如果真 (是否为空 (是否自动合并更新Cookie))
是否自动合并更新Cookie = 真
如果真 (是否为空 (是否补全必要协议头))
是否补全必要协议头 = 真
如果真 (是否为空 (是否处理协议头大小写))
是否处理协议头大小写 = 真
线程_初始化COM库 ()
如果真 (访问方式 < 0 或 访问方式 > 7)
访问方式 = 0局_访问方式 = 多项选择 (访问方式 + 1, “GET”, “POST”, “HEAD”, “PUT”, “OPTIONS”, “DELETE”, “TRACE”, “CONNECT”)
判断 (是否为空 (对象继承))
如果真 (局_WinHttp.创建 (“WinHttp.WinHttpRequest.5.1”, ) = 假)
返回 ({ })

局_WinHttp = 对象继承
如果真 (超时 ≠ -1)
如果 (超时 < 1)
超时 = 15000
超时 = 超时 × 1000
局_WinHttp.方法 (“SetTimeouts”, 超时, 超时, 超时, 超时)
如果真 (代理地址 ≠ “”)
局_WinHttp.方法 (“SetProxy”, 2, 代理地址)局_WinHttp.方法 (“Open”, 局_访问方式, 网址, 假)
如果真 (禁止重定向)
局_WinHttp.写属性 (“Option”, 6, 0)
局_WinHttp.写属性 (“Option”, 4, 13056) ' 忽略错误标志
如果真 (是否补全必要协议头)
如果真 (寻找文本 (附加协议头, “Accept:”, , 真) = -1)
附加协议头 = 附加协议头 + #换行符 + “Accept: */*”


如果真 (寻找文本 (附加协议头, “Referer:”, , 真) = -1)
附加协议头 = 附加协议头 + #换行符 + “Referer: ” + 网址


如果真 (寻找文本 (附加协议头, “Accept-Language:”, , 真) = -1)
附加协议头 = 附加协议头 + #换行符 + “Accept-Language: zh-cn”


如果真 (寻找文本 (附加协议头, “User-Agent:”, , 真) = -1)
附加协议头 = 附加协议头 + #换行符 + “User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)”


如果真 (访问方式 = 1)

如果真 (寻找文本 (附加协议头, “Content-Type:”, , 真) = -1)

附加协议头 = 附加协议头 + #换行符 + “Content-Type: application/x-www-form-urlencoded”





如果真 (是否处理协议头大小写)
附加协议头 = 网页_处理协议头 (附加协议头)
如果真 (代理地址 ≠ “” 且 代理用户名 ≠ “”)
如果真 (是否为空 (代理标识))
代理标识 = 1
' 局_WinHttp.方法 (“SetProxyCredentials”, 代理用户名, 代理密码, 代理标识)
如果真 (代理标识 = 1)
局_WinHttp.方法 (“SetRequestHeader”, “Proxy-Authorization”, “Basic ” + 编码_BASE64编码 (到字节集 (代理用户名 + “:” + 代理密码)))


如果真 (取反 (是否为空 (提交Cookies)))
如果真 (取文本长度 (提交Cookies) > 0)

如果真 (寻找文本 (提交Cookies, “Cookie:”, , 真) ≠ -1)

提交Cookies = 子文本替换 (提交Cookies, “Cookie:”, “”, , , 假)


局_WinHttp.方法 (“SetRequestHeader”, “Cookie”, 提交Cookies)
判断 (寻找文本 (附加协议头, #换行符, , 假) = -1)
局_WinHttp.方法 (“SetRequestHeader”, 内部_协议头取名 (附加协议头), 内部_协议头取值 (附加协议头))
局_发送协议头 = 分割文本 (附加协议头, #换行符, )
计次循环首 (取数组成员数 (局_发送协议头), 局_计次)

如果真 (局_发送协议头 [局_计次] ≠ “”)


如果真 (内部_协议头取名 (局_发送协议头 [局_计次]) = “Connection”)



如果真 (内部_协议头取值 (局_发送协议头 [局_计次]) = “keep-alive”)



到循环尾 () ' 筛选排除此参数 避免协议头有此参数 HTTP对象又自动添加此参数










局_WinHttp.方法 (“SetRequestHeader”, 内部_协议头取名 (局_发送协议头 [局_计次]), 内部_协议头取值 (局_发送协议头 [局_计次]))



计次循环尾 ()
判断 (字节集提交 = { })
局_WinHttp.方法 (“Send”, 提交信息)
局_变体提交.赋值 (字节集提交, )
局_WinHttp.方法 (“Send”, 局_变体提交)局_网页数据 = 局_WinHttp.读属性 (“ResponseBody”, ).取字节集 ()
返回协议头 = 局_WinHttp.读文本属性 (“GetAllResponseHeaders”, )
返回状态代码 = 局_WinHttp.读数值属性 (“Status”, )
局_WinHttp.读文本属性 (“StatusText”, )
局_返回协议头 = 分割文本 (返回协议头, #换行符, )
返回Cookies = “”
计次循环首 (取数组成员数 (局_返回协议头), 局_计次)
如果真 (文本_取左边 (局_返回协议头 [局_计次], “: ”) = “Set-Cookie”)

判断 (寻找文本 (局_返回协议头 [局_计次], “;”, , 假) ≠ -1)

返回Cookies = 返回Cookies + 删首尾空 (文本_取出中间文本 (局_返回协议头 [局_计次], “Set-Cookie:”, “;”)) + “; ”

返回Cookies = 返回Cookies + 删首尾空 (子文本替换 (局_返回协议头 [局_计次], “Set-Cookie:”, , , , 假)) + “; ”




计次循环尾 ()
如果真 (取文本左边 (返回Cookies, 2) = “; ”)
返回Cookies = 取文本左边 (返回Cookies, 取文本长度 (返回Cookies) - 2)
如果真 (是否自动合并更新Cookie)
如果真 (取反 (是否为空 (提交Cookies)))
返回Cookies = 网页_Cookie合并更新 (提交Cookies, 返回Cookies)

局_WinHttp.清除 ()
线程_取消COM库 ()
返回 (局_网页数据)
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 内部_协议头取名 | 文本型 | ||||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 协议头 | 文本型 | ||||||
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| 位置 | 整数型 | |||||
| 结果 | 文本型 | |||||
如果真 (位置 ≠ -1)
结果 = 取文本左边 (协议头, 位置 - 1)返回 (删首尾空 (结果))
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 内部_协议头取值 | 文本型 | ||||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 协议头 | 文本型 | ||||||
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| 位置 | 整数型 | |||||
| 结果 | 文本型 | |||||
如果真 (位置 ≠ -1)
结果 = 取文本右边 (协议头, 取文本长度 (协议头) - 位置)返回 (删首尾空 (结果))
词条作者信息 使用例程
