用易语言实现向一个网站发送POST请求并取回返回数据(以本站搜索为例)

elandpost.png

拿本站的搜索功能为例,我们需要用到的是Chrome的f12抓包(别慌,不难,跟着一步步走也可以学会)、精益模块。

还有一些小工具,等会用到的时候再讲。

首先我们先抓包,看下载搜索时提交了什么东西

首先在网站的首页按f12打开开发工具,然后切换到network模式

image.png

然后我们在搜索框打上文字,点击搜索(我这里用的是“落叶”两个字)

image.png

点击之后,我们就可以看到刚刚抓到的包,可以在这里找到一些基本的信息(如提交地址啊什么的)还有需要提交的参数

image.png

(记住上图的RequestURL等会儿会用到)

搜索功能比较简单,只需要提交一个参数即可

image.png

找到需要的信息后,我们就开始写代码,首先设计下窗口,需要用到一个超文本浏览框用来展示搜索之后的信息

image.png

然后我们需要用到精益模块的“网页_访问_对象”这个函数(没得模块的去百度下载,直接搜索精益模块就有)

    子程序名:网页_访问_对象
    使用WinHttp的对象方式访问网页
    返回值类型:字节集
    参数<1>的名称为“网址”,类型为“文本型”。注明:完整的网页地址,必须包含http://或者https://。
    参数<2>的名称为“访问方式”,类型为“整数型”,允许接收空参数数据。注明:0=GET 1=POST 2=HEAD 3=PUT  4=OPTIONS  5=DELETE  6=TRACE  7=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>的名称为“是否处理协议头大小写”,类型为“逻辑型”,允许接收空参数数据。注明:将协议头中的键名首字母处理为大写  默认为真。

参数有点多但是不要慌,在搜索中能用到的只有前面三个参数,后面的等我们以后的文章中用到之后再讲

参数1为网址,即我们抓包抓到的request(上图有),我们可得知本站在搜索时request为:http://qq.luoyee.cn/search.php

参数2是提交方式,我们用到的是1(POST),其实网站可以用GET提交搜索,但我们主要现在使用POST,就先把GET略过

参数3是提交信息,我们在搜索时只需要用到一个参数:q=搜索内容

其他的参数我们这次暂且用不到

第一步:先取返回数据

为了方便我们声明一个变量:返回,类型为字节集

然后再声明一个变量:内容,类型为文本型,这个变量用来存放转码后的内容

首先我们需要先给 返回 这个变量赋值,用POST提交数据,然后将返回的数据赋值给他

在按钮被单击的子程序内首先写入以下内容

返回 = 网页_访问_对象 (“http://qq.luoyee.cn/zb_system/cmd.php?act=search”, 1, “q=” + 编辑框1.内容)

编辑框1即为我们输入搜索内容的地方

然后我们调试输出以下到文本(返回),可以发现我们得出了一堆乱码

我们需要搞清楚这是什么编码格式,这里推荐使用精益编程助手(懒得挂链接。。自行百度)(滑稽.gif)

然后我们使用解码工具,赋值乱码的其中一段进行解码

image.png

我们看到UTF8的时候是中文(我们能看懂),然后就可以基本确定是UTF8编码了

然后我们需要用到一个函数“编码_UTF8解码”,来看一眼提示

    子程序名:编码_UTF8解码
    直接返回宽字节  参考返回窄字节
    返回值类型:字节集
    参数<1>的名称为“UTF8数据”,类型为“字节集”。注明:待解码的UTF8格式编码数据。
    参数<2>的名称为“文本数据”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:参考返回 文本数据。

他的意思也就是把参数1的字节集转换文本数据并赋值给参数2

我们参数1可以写刚刚的变量:返回

参数2就写变量:内容

编码_UTF8解码 (返回, 内容)

这下输出变量 内容 看到的就是赏心悦目的中文了

image.png

其实到这里,我们的POST请求就已经结束了,但是如果我们将这段代码直接扔给用户,那么用户是可能看不懂的(貌似肯定无法直接读懂),所以为了用户着想,我们可以考虑把返回的这段文本保存为一个html文件,然后在超文本浏览框中展示出来

.版本 2
.支持库 HtmlView

写到文件 (取运行目录 () + “c1.html”, 到字节集 (返回))
超文本浏览框1.地址 = 取运行目录 () + “c1.html”

然后我们的程序到这里就相当于写完了

image.png
.版本 2
.支持库 spec
.支持库 HtmlView

返回 = 网页_访问_对象 (“http://qq.luoyee.cn/zb_system/cmd.php?act=search”, 1, “q=” + 编辑框1.内容)
编码_UTF8解码 (返回, 内容)
调试输出 (到文本 (内容))
写到文件 (取运行目录 () + “c1.html”, 到字节集 (返回))
超文本浏览框1.地址 = 取运行目录 () + “c1.html”

其实还是非常简单的

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容