易语⾔进⾏⽹页操作⽅法
⾸先展⽰下功能(看图⽚)
本代码附加了DLL代码命令,会以不同的颜⾊标注,也可以全部复制后张贴到易语⾔新建的⼀个程序集名中,易语⾔会智能的分开DLL和⼦程序。
相关源码:
.版本 2
.程序集⽹页操作累
.⼦程序 HTTP读⽂本, ⽂本型, 公开, 有可能线程阻塞,请在外部加超时判断
.参数完整⽹址, ⽂本型
.参数访问⽅式, ⽂本型, 可空, "GET" or "POST",为空默认"GET"
.参数代理地址, ⽂本型, 可空
.参数附加协议头, ⽂本型, 可空
.参数提交信息, ⽂本型, 可空, "POST"专⽤
.参数⽹页头, ⽂本型, 参考可空, 返回⽹页头部信息
返回 (到⽂本 (HTTP⽹页访问 (完整⽹址, 访问⽅式, 代理地址, 附加协议头, 提交信息, ⽹页头)))
.
⼦程序 HTTP⽹页访问, 字节集, 公开, 有可能线程阻塞,请在外部加超时判断
.参数完整⽹址, ⽂本型, , “”
.参数访问⽅式, ⽂本型, 可空, "GET" or "POST",为空默认"GET"
.参数代理地址, ⽂本型, 可空
.参数附加协议头, ⽂本型, 可空
.参数提交信息, ⽂本型, 可空, "POST"专⽤
.参数⽹页头, ⽂本型, 参考可空, 返回⽹页头部信息
.局部变量请求句柄, 整数型
.局部变量连接句柄, 整数型
.局部变量返回句柄, 整数型
.局部变量域名, ⽂本型
.
局部变量页⾯地址, ⽂本型
.局部变量已读字节, 整数型
.局部变量 Cookie位置, 整数型
.局部变量内存号, 整数型
.局部变量字节集容器, 字节集
.局部变量返回字集, 字节集
页⾯地址=取页⾯地址 (完整⽹址)
域名=取域名 (完整⽹址)
' 建⽴基本连接
.如果 (删全部空 (代理地址) = “”)
请求句柄= InternetOpen (到⽂本 (“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”), 1, 字符 (0), 字符 (0), 0)
.否则
请求句柄= InternetOpen (到⽂本 (“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”), 3, 到⽂本 (“http=” +代理地址), 字符 (0), 0)
.如果结束
.如果真 (请求句柄= 0)
返回字集=取空⽩字节集 (0)
返回 (取空⽩字节集 (255))
.如果真结束
连接句柄= InternetConnect (请求句柄, 域名, 取端⼝ (完整⽹址), “”, “”, 3, 0, 0)
.如果真 (连接句柄= 0)
InternetCloseHandle (请求句柄)
返回字集=取空⽩字节集 (0)
返回 (取空⽩字节集 (255))
.如果真结束
返回句柄= HttpOpenRequest (连接句柄, 访问⽅式, 页⾯地址, “HTTP/1.1”, 字符 (0), 字符 (0), 2147483648, 0)
.如果真 (返回句柄= 0)
InternetCloseHandle (连接句柄)
InternetCloseHandle (请求句柄)
返回字集=取空⽩字节集 (0)
返回 (取空⽩字节集 (255))
.如果真结束
' 补充协议头
.如果真 (寻⽂本 (附加协议头, “Accept: ”, 1, 真) = -1)
附加协议头=附加协议头+ “Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*” + #换⾏符.如果真结束
.如果真 (寻⽂本 (附加协议头, “Referer: ”, 1, 真) = -1)
附加协议头=附加协议头+ “Referer: ” +完整⽹址+ #换⾏符
.如果真结束
.如果真 (寻⽂本 (附加协议头, “Accept-Language: ”, 1, 真) = -1)
附加协议头=附加协议头+ “Accept-Language: zh-cn” + #换⾏符
.如果真结束
' 附带信息发送请求
.判断开始 (访问⽅式= “” 或到⼤写 (访问⽅式) = “GET”)
HttpSendRequest (返回句柄, 附加协议头, 取⽂本长度 (附加协议头), 字符 (0), 0)
.判断 (到⼤写 (访问⽅式) = “POST”)
.如果真 (提交信息 ≠ “”)
.如果真 (寻⽂本 (附加协议头, “Content-Type: ”, 1, 真) = -1)
附加协议头=附加协议头+ “Content-Type: application/x-www-form-urlencoded” + #换⾏符
.如果真结束
附加协议头=附加协议头+ “Content-Length: ” +到⽂本 (取⽂本长度 (提交信息)) + #换⾏符
.如果真结束
HttpSendRequest (返回句柄, 附加协议头, 取⽂本长度 (附加协议头), 提交信息, 取⽂本长度 (提交信息))
.默认
InternetCloseHandle (连接句柄)
InternetCloseHandle (请求句柄)
InternetCloseHandle (返回句柄)
返回字集=取空⽩字节集 (0)
返回 (取空⽩字节集 (255))
.判断结束
' 读取页⾯⽂本
内存号=打开内存⽂件 ()
字节集容器=取空⽩字节集 (2048)
.循环判断⾸ ()
处理事件 ()
InternetReadFile (返回句柄, 字节集容器, 取字节集长度 (字节集容器), 已读字节)
写出字节集 (内存号, 取字节集左边 (字节集容器, 已读字节))
' 返回字集=返回字集+取字节集左边 (字节集容器, 已读字节)
.循环判断尾 (已读字节 ≠ 0)
移到⽂件⾸ (内存号)
返回字集=读⼊字节集 (内存号, 取⽂件长度 (内存号))
关闭⽂件 (内存号)
' 取服务器回传协议头
⽹页头=取空⽩⽂本 (1024)
HttpQueryInfo (返回句柄, 22, ⽹页头, 1024, 0)
' 关闭句柄
InternetCloseHandle (返回句柄)
InternetCloseHandle (连接句柄)
InternetCloseHandle (请求句柄)
' 设置COOKIE
.如果真 (寻⽂本 (⽹页头, “Set-Cookie: ”, 1, 真) > 0)
内存号=打开内存⽂件 ()
写出⽂本 (内存号, ⽹页头)
移到⽂件⾸ (内存号)
.判断循环⾸ (是否在⽂件尾 (内存号, 假) =假)
⽹页头=读⼊⼀⾏ (内存号)
.如果真 (寻⽂本 (⽹页头, “Set-Cookie: ”, 1, 真) > 0)
⽹页头=⽂本替换 (⽹页头, 1, 12, )
Cookie位置=寻⽂本 (⽹页头, “=”, 1, 真)
InternetSetCookie (“” +域名, 取⽂本左边 (⽹页头, Cookie位置- 1), 取⽂本右边 (⽹页头, 取⽂本长度 (⽹页头) - Cookie位置))
.如果真结束
处理事件 ()
.判断循环尾 ()
关闭⽂件 (内存号)
.如果真结束
返回 (返回字集)
.⼦程序打开指定⽹址, 逻辑型, 公开, 打开指定⽹址(成功返回真,失败返回假)
.参数要打开的⽹址, ⽂本型, , 欲打开的⽹页地址
.如果 (_执⾏ (0, “open”, “”, 要打开的⽹址, “”, 1) = 2)
返回 (假)
.否则
返回 (真)
.如果结束
.⼦程序 URL编码_UTF8, ⽂本型, 公开, 返回已编码的URL
.参数 Bin_URL, ⽂本型
.局部变量局部_数据, 字节集
.局部变量局部_数据1, 字节集
url编码和utf8区别.局部变量 i, 整数型
.局部变量 ii, ⽂本型
局部_数据=编码转换 (到字节集 (Bin_URL), “GBK”, “utf-8”, 3)
局部_数据=取字节集左边 (局部_数据, 取字节集长度 (局部_数据) - 1)
.
计次循环⾸ (取字节集长度 (局部_数据), i)
.如果 (到整数 (局部_数据 [i]) ≥ 48 且到整数 (局部_数据 [i]) ≤ 57 或到整数 (局部_数据 [i]) ≥ 65 且到整数 (局部_数据 [i]) ≤ 90 或到整数 (局部_数据 [i]) ≥ 65 且到整数 (局部_数据 [i]) ≤ 90 或到整数 (局部_数据 [i]) ≥ 97 且到整数 (局部_数据 [i]) ≤ 122) ii = ii +字符 (局部_数据 [i])
.否则
ii = ii + “%” +取⼗六进制⽂本 (局部_数据 [i])
.如果结束
.计次循环尾 ()
返回 (ii)
.⼦程序 URL编码, ⽂本型, 公开, 返回已编码的URL
.参数 Bin_URL, ⽂本型
.局部变量局部_数据, 字节集
.局部变量 i, 整数型
.局部变量 ii, ⽂本型
局部_数据=到字节集 (Bin_URL)
.计次循环⾸ (取字节集长度 (局部_数据), i)
.如果 (到整数 (局部_数据 [i]) ≥ 48 且到整数 (局部_数据 [i]) ≤ 57 或到整数 (局部_数据 [i]) ≥ 65 且到整数 (局部_数据 [i]) ≤ 90 或到整数 (局部_数据 [i]) ≥ 65 且到整数 (局部_数据 [i]) ≤ 90 或到整数 (局部_数据 [i]) ≥ 97 且到整数 (局部_数据 [i]) ≤ 122) ii = ii +字符 (局部_数据 [i])
.否则
ii = ii + “%” +取⼗六进制⽂本 (局部_数据 [i])
.如果结束
.计次循环尾 ()
返回 (ii)
.⼦程序 URL解码_UTF8, ⽂本型, 公开, 返回已解码的URL
.参数 Bin_URL, ⽂本型, , 欲解码的⽂本
.局部变量循环容器, 整数型
.局部变量 Len, 整数型
.局部变量 HEX, ⽂本型
.局部变量⽬标, ⽂本型
.局部变量 H, 整数型
.局部变量 L, 整数型
Len =取⽂本长度 (Bin_URL)
循环容器= 1
HEX = “0123456789ABCDEF”
.
判断循环⾸ (循环容器 ≤ Len)
.判断开始 (取⽂本中间 (Bin_URL, 循环容器, 1) ≠ “%”)
⽬标=⽬标+取⽂本中间 (Bin_URL, 循环容器, 1)
.默认
循环容器=循环容器+ 1
H =寻⽂本 (HEX, 到⼤写 (取⽂本中间 (Bin_URL, 循环容器, 1)), , 假) - 1
循环容器=循环容器+ 1
L =寻⽂本 (HEX, 到⼤写 (取⽂本中间 (Bin_URL, 循环容器, 1)), , 假) - 1
⽬标=⽬标+字符 (H × 16 + L)
.判断结束
循环容器=循环容器+ 1
.
判断循环尾 ()
返回 (到⽂本 (编码转换 (到字节集 (⽬标), “utf-8”, “GBK”)))
.⼦程序 URL解码, ⽂本型, 公开, 返回已解码的URL
.参数 Bin_URL, ⽂本型, , 欲解码的⽂本
.局部变量循环容器, 整数型
.局部变量 Len, 整数型
.局部变量 HEX, ⽂本型
.局部变量⽬标, ⽂本型
.局部变量 H, 整数型
.局部变量 L, 整数型
Len =取⽂本长度 (Bin_URL)
循环容器= 1
HEX = “0123456789ABCDEF”
.判断循环⾸ (循环容器 ≤ Len)
.判断开始 (取⽂本中间 (Bin_URL, 循环容器, 1) ≠ “%”)
⽬标=⽬标+取⽂本中间 (Bin_URL, 循环容器, 1)
.默认
循环容器=循环容器+ 1
H =寻⽂本 (HEX, 到⼤写 (取⽂本中间 (Bin_URL, 循环容器, 1)), , 假) - 1
循环容器=循环容器+ 1
L =寻⽂本 (HEX, 到⼤写 (取⽂本中间 (Bin_URL, 循环容器, 1)), , 假) - 1
⽬标=⽬标+字符 (H × 16 + L)
.
判断结束
循环容器=循环容器+ 1
.判断循环尾 ()
返回 (⽬标)
.⼦程序取页⾯地址, ⽂本型
.参数⽹址, ⽂本型
.局部变量页⾯地址, ⽂本型
.局部变量符号位置, 整数型
.局部变量域名, ⽂本型
域名=取域名 (⽹址)
符号位置=寻⽂本 (⽹址, “/”, 寻⽂本 (⽹址, 域名, 1, 真), 真)
.
如果 (符号位置> 0)
页⾯地址=取⽂本右边 (⽹址, 取⽂本长度 (⽹址) -符号位置+ 1)
.否则
页⾯地址= “/”
.如果结束
返回 (页⾯地址)
.⼦程序取端⼝, 整数型
.参数⽹址, ⽂本型
.局部变量 dwNumber, 整数型
.局部变量 szServerName, ⽂本型
szServerName =取域名 (⽹址, 真)
dwNumber =寻⽂本 (szServerName, “:”, , 假)
dwNumber =选择 (dwNumber = -1, 80, 到数值 (取⽂本右边 (szServerName, 取⽂本长度 (szServerName) - dwNumber)))
返回 (dwNumber)
.⼦程序取域名, ⽂本型
.参数⽹址, ⽂本型
.参数不过滤端⼝, 逻辑型, 可空
.局部变量 dwNumber, 整数型
.局部变量 dwLast, 整数型
.局部变量 szServerName, ⽂本型
.局部变量临时⽂本, ⽂本型
.局部变量⽹址头, 整数型
szServerName =⽹址
dwNumber =选择 (寻⽂本 (szServerName, “”, , 假) = -1, 1, 寻⽂本 (szServerName, “”, , 假) + 7)
szServerName =取⽂本中间 (szServerName, dwNumber, 选择 (寻⽂本 (szServerName, “/”, dwNumber, 假) = -1, 取⽂本长度 (szServerName), 寻⽂本 (szServerName, “/”, dwNumber, 假) - dwNumber)) ' 这段代码是过滤掉前和后/ .如果真 (取反 (不过滤端⼝))
dwNumber =寻⽂本 (szServerName, “:”, , 假)
.如果真 (dwNumber ≠ -1)
szServerName =取⽂本左边 (szServerName, dwNumber - 1)
.如果真结束
.如果真结束
返回 (到⼩写 (szServerName))
.
⼦程序编码转换, 字节集
.参数待转换数据, 字节集
.参数转换前编码, ⽂本型
.参数转换后编码, ⽂本型, , utf-8;unicode;GBK 等
.参数开始位置, 整数型, 可空, 位置从0开始。
.局部变量⽂本, ⽂本型
.局部变量字节集, 字节集
.局部变量 Adodb, 对象
.局部变量变体型, 变体型
初始化对象开始 (0)
Adodb.创建 (“Adodb.Stream”, )
Adodb.写属性 (“Type”, 1)
Adodb.⽅法 (“Open”, )
变体型.置类型 (7)
变体型.创建数组 (1, 取字节集长度 (待转换数据))
变体型.赋值 (待转换数据, )
Adodb.⽅法 (“Write”, 变体型)
Adodb.写属性 (“Position”, 0)
Adodb.写属性 (“Type”, 2)
Adodb.写属性 (“Charset”, 转换前编码)
⽂本= Adodb.⽂本⽅法 (“ReadText”, )
Adodb.⽅法 (“Close”, )
Adodb.⽅法 (“Open”, )
Adodb.写属性 (“Charset”, 转换后编码)
Adodb.⽅法 (“WriteText”, ⽂本)
Adodb.写属性 (“Position”, 0)
Adodb.写属性 (“Type”, 1)
.如果真 (是否为空 (开始位置) =假)
Adodb.写属性 (“Position”, 开始位置)
.如果真结束
字节集= Adodb.通⽤⽅法 (“Read”, ).取字节集 ()
Adodb.清除 ()
初始化对象结束 ()
返回 (字节集)
.版本 2
.DLL命令初始化对象开始, , "ole32.dll", "CoInitialize"
.参数 pvReserved, 整数型
.DLL命令初始化对象结束, , "ole32.dll", "CoUninitialize"
.DLL命令 InternetSetCookie, , "wininet.dll", "InternetSetCookieA"
.参数域名, ⽂本型, 传址
.参数名称, ⽂本型, 传址
.参数内容, ⽂本型, 传址
.DLL命令 InternetGetCookie, , "wininet.dll", "InternetGetCookieA"
.参数域名, ⽂本型, 传址
.
参数名称, ⽂本型, 传址
.参数内容, ⽂本型, 传址
.参数尺⼨, 整数型, 传址
.DLL命令 HttpQueryInfo, , "wininet.dll", "HttpQueryInfoA"
.参数 Internet请求句柄, 整数型
.参数待查信息, 整数型, , 22返回所有信息;43SET_COOKIE;+2147483648返回⽂本
.参数返回容器, ⽂本型, 传址
.参数返回容器长度, 整数型, 传址
.参数 lpdwIndex, 整数型
.DLL命令 HttpAddRequestHeaders, , "wininet.dll", "HttpAddRequestHeadersA"
.参数 Internet请求句柄, 整数型
.
参数 lpszHeaders, ⽂本型, 传址
.参数 dwHeadersLength, 整数型
.参数 dwModifiers, 整数型
.DLL命令 InternetCloseHandle, 逻辑型, "wininet.dll", "InternetCloseHandle", , 访问⽹页
.参数 hInternet, 整数型
.DLL命令 HttpOpenRequest, 整数型, "WinINet.dll", "HttpOpenRequestA"
.参数 hConnect, 整数型
.参数 lpszVerb, ⽂本型
.参数 lpszObjectName, ⽂本型
.参数 lpszVersion, ⽂本型
.参数 lpszReferer, ⽂本型
.
参数 lplpszAcceptTypes, ⽂本型
.参数 dwFlags, 整数型
.参数 dwContext, 整数型
.DLL命令 InternetReadFile, 逻辑型, "WinINet.dll"
.参数 hFile, 整数型
.参数 lpBuffer, 字节集, 传址
.参数 dwNumberOfBytesToRead, 整数型
.参数 lpdwNumberOfBytesRead, 整数型, 传址
.DLL命令 HttpSendRequest, 逻辑型, "wininet.dll", "HttpSendRequestA"
.参数 HTTP请求句柄, 整数型
.参数 sHeaders, ⽂本型, 传址
.
参数 lHeadersLength, 整数型
.参数 sOptional, ⽂本型, 传址
.参数 lOptionalLength, 整数型
.DLL命令 InternetConnect, 整数型, "wininet.dll", "InternetConnectA"
.参数 Internet句柄, 整数型
.参数域名, ⽂本型, 传址
.参数服务器端⼝, 整数型, , 80HTTP;21FTP;
.参数⽤户名, ⽂本型, 传址, 空
.参数⽤户⼝令, ⽂本型, 传址, 空
.参数服务类型, 整数型, , 1FTP;3HTTP
.参数 dwFlags, 整数型, , 0http;134217728被动FTP模式
.
参数 dwContext, 整数型, , 0
.DLL命令 InternetOpen, 整数型, "wininet.dll", "InternetOpenA"
.参数句柄名称, ⽂本型, 传址
.参数连接类型, 整数型, , 1直接连接;3代理连接
.参数代理, ⽂本型, 传址
.参数代理掩码, ⽂本型, 传址
.参数 dwFlags, 整数型, , 0
.DLL命令 _执⾏, 整数型, , "ShellExecuteA"
.参数 hwnd, 整数型, , 指定⼀个窗⼝的句柄,有些时候,Windows程序有必要在创建⾃⼰的主窗⼝前显⽰⼀个消息框。
.参数 lpOperation, ⽂本型, , 指定字串“Open”来打开lpFlie⽂档;或指定“Print”来打印它。也可设为vbNullString,表⽰默认为“Open”
.参数 lpFile, ⽂本型, , 想⽤关联的程序打印或打开的⼀个程序名或⽂件名
.参数 lpParameters, ⽂本型, , 如lpFile是⼀个可执⾏⽂件,则这个字串包含了传递给执⾏程序的参数。如lpFile引⽤的是⼀个⽂档⽂件,或者不需要使⽤参数,则设为vbNullString .参数 lpDirectory, ⽂本型, , 想使⽤的默认路径完整路径
.参数 nShowCmd, 整数型, , 定义了如何显⽰启动程序的常数值。参考ShowWindow函数的nCmdShow参数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论