易语言网页_访问_对象使用说明
易语言命令名称:网页_访问_对象
命令功能介绍:
使用WinHttp的对象方式访问网页
命令类别:精易模块命令
命令使用说明:
子程序名:网页_访问_对象
使用WinHttp的对象方式访问网页
返回值类型:字节集
参数<1>的名称为“网址”,类型为“文本型”。注明:完整的网页地址,必须包含http://或者https://。
参数<2>的名称为“访问方式”,类型为“整数型”,允许接收空参数数据。注明:0=GET 1=POST 2=HEAD 3=PUT4=OPTIONS5=DELETE6=TRACE7=CONNECT。
参数<3>的名称为“提交信息”,类型为“文本型”,允许接收空参数数据。注明:"POST"专用 自动UTF8编码。
参数<4>的名称为“提交Cookies”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:设置提交时的cookie。
参数<5>的名称为“返回Cookies”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:返回的Cookie。
参数<6>的名称为“附加协议头”,类型为“文本型”,允许接收空参数数据。注明:一行一个请用换行符隔开。
参数<7>的名称为“返回协议头”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:返回的协议头。
参数<8>的名称为“返回状态代码”,类型为“整数型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:网页返回的状态代码,例如:200;302;404等。
参数<9>的名称为“禁止重定向”,类型为“逻辑型”,允许接收空参数数据。注明:默认不禁止网页重定向。
参数<10>的名称为“字节集提交”,类型为“字节集”,允许接收空参数数据。注明:提交字节集数据。
参数<11>的名称为“代理地址”,类型为“文本型”,允许接收空参数数据。注明:代理地址,格式为 8.8.8.8:88。
参数<12>的名称为“超时”,类型为“整数型”,允许接收空参数数据。注明:秒|默认为15秒,-1为无限等待。
参数<13>的名称为“代理用户名”,类型为“文本型”,允许接收空参数数据。注明:用户名。
参数<14>的名称为“代理密码”,类型为“文本型”,允许接收空参数数据。注明:密码。
参数<15>的名称为“代理标识”,类型为“整数型”,允许接收空参数数据。注明:代理标识,默认为1,0为路由器。
参数<16>的名称为“对象继承”,类型为“对象”,允许接收空参数数据。注明:此处可自行提供对象,不再主动创建。
参数<17>的名称为“是否自动合并更新Cookie”,类型为“逻辑型”,允许接收空参数数据。注明:默认为真,自动合并更新。
参数<18>的名称为“是否补全必要协议头”,类型为“逻辑型”,允许接收空参数数据。注明:当附件协议头为空时自动添加必要的UA协议头 默认为真,假将不再添加非传入协议头。
参数<19>的名称为“是否处理协议头大小写”,类型为“逻辑型”,允许接收空参数数据。注明:将协议头中的键名首字母处理为大写默认为真。
命令源码:
.版本 2
.子程序 网页_访问_对象, 字节集, 公开, 使用WinHttp的对象方式访问网页
.参数 网址, 文本型, , 完整的网页地址,必须包含http://或者https://
.参数 访问方式, 整数型, 可空, 0=GET 1=POST 2=HEAD 3=PUT4=OPTIONS5=DELETE6=TRACE7=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)
结果 = 取文本右边 (协议头, 取文本长度 (协议头) - 位置)
.如果真结束
返回 (删首尾空 (结果))
源码复制到易语言教程:
首先复制上面的命令源码.到剪辑板.然后来到易语言的程序集界面如下图所示
http://eyy8.eyy8.vip/forum/202002/24/132944b0m70cyjjvy79j2y.png
然后拖动鼠标把程序集名-窗口程序集.选中.然后粘贴上面的代码
即可插入易语言命令代码哦
DLL源码复制到易语言教程:
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了! 楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了! 好像很复杂的啊·
看的我头晕眼花。 太复杂了,有点搞不懂 好像很复杂的啊·* 楼主辛苦了:loveliness: 会好好学习的
这个帖子不回对不起自己!我想我是一天也不能离开易语言吧。
页:
[1]
2