搜索
aardio官方社区 门户 查看主题

【开源】WinHttpRequest操作类

发布者: heize | 发布时间: 2015-5-25 15:39| 查看数: 3907| 评论数: 5|帖子模式

aardio的inet网络库已经非常强大,这个操作类只是多一种解决方案,初学aardio,代码可能写的不好,如有错误还请指正,谢谢。
基本按照WinHttpRequest 所提供方法封装的类,所以一些参数直接看“WinHttpRequest”相关的文档就行了。
类已经写好了基本的请求头,足可以应对大部分网站,当然这些都是可以更改的。
可以利用setCookie()、getCookies()、getCookie() 方法设置、获取cookies。
还加了一个“伪造客户端IP”的方法setIP() (不一定100%有效,对付比较弱智的检测而已。)

下面是一个基本的GET访问模式演示


  1. import win.ui;
  2. import string;
  3. import inet.whttp;
  4. import whttp;
  5. /*DSG{{*/
  6. mainForm = ..win.form(text="aardio Form";right=703;bottom=434;border="thin";max=false;min=false)
  7. mainForm.add(
  8. button={cls="button";text="测试访问";left=274;top=382;right=394;bottom=416;z=1};
  9. edit={cls="edit";text="edit";left=8;top=9;right=693;bottom=369;edge=1;multiline=1;style=1539;vscroll=1;z=2}
  10. )
  11. /*}}*/

  12. mainForm.button.oncommand = function(id,event){
  13.         winhttp = whttp.Request();
  14.         winhttp.create();//创建对象
  15.         winhttp.open('http://www.baidu.com');//默认为GET访问
  16.         winhttp.send();//发送请求
  17.         var htmlCode = winhttp.getResponseBodyUTF8();//获取返回文本
  18.         mainForm.edit.text = htmlCode;
  19. }
  20. mainForm.show()
  21. return win.loopMessage();
复制代码


也提供了比较方便的方法接口,基本上可以自定义任何协议头、数据格式,智能提示我做的不太好,见谅

  1. whttp.Request() = !winhttp.
  2. !winhttp.create() = 创建WinHttpRequest对象
  3. !winhttp.close() = 销毁对象
  4. !winhttp.open() = 打开HTTP链接\n@1 url string\n@2 访问模式 string (POST、GET、HEAD) 默认为:GET\n@3 Async bool 是否为异步访问,默认false
  5. !winhttp.send() = 发送HTTP请求\n@1 可空 string 要POST的数据
  6. !winhttp.setRedirec() = 是否允许重定向,默认false\n@1 bool
  7. !winhttp.setTimeouts(10000,20000,30000,60000) = 设置超时时间,以亳秒为单位(1秒为1000毫秒)\n@1 解析超时\n@2 连接超时\n@3 发送超时\n@4 接收超时
  8. !winhttp.setRequestHeader() = 设置请求协议头,\n@1 属性\n@2 属性值
  9. !winhttp.setUserAgent() = 设置User-Agent值\n@1 string
  10. !winhttp.setReferer() = 设置上级来路\n@1 string
  11. !winhttp.setCookie() = 设置cookies\n@1 string
  12. !winhttp.setProxy() = 设置代理\n@1 string (格式:192.168.1.1:8080)
  13. !winhttp.setCredentials() = 设置身份验证凭据\n@1 用户名\n@2 密码
  14. !winhttp.setClientCertificat() = 设置客户端证书\n@1 string
  15. !winhttp.setAutoLogonPolicy() = 设置是否应自动发送凭据\n@1 int
  16. !winhttp.setIP() = 伪造客户端IP,针对弱智的检测\n@1 string (IP:xxx.xxx.xxx.xxx)
  17. !winhttp.getResponseHeader() = 取HTTP返回协议头\n@1 string (如:"Content_Type")
  18. !winhttp.getResponseHeaders() = 取全部HTTP返回协议头
  19. !winhttp.getStatus() = 取返回状态码
  20. !winhttp.getStatusText() = 取返回状态文本
  21. !winhttp.getResponseLocation() = 取重定向地址
  22. !winhttp.getResponseBody() = 取服务器返回文本
  23. !winhttp.getResponseBodyUTF8() = 取服务器返回文本,并将UTF-8转换为ANSI
  24. !winhttp.getResponseStream() = 取服务器返回Stream
  25. !winhttp.getCookies() = 取全部Cookies
  26. !winhttp.getCookie() = 取Cookies值/n@1 string
  27. !winhttp.delRequestHeader() = 删除某个请求头/n@1 string
复制代码


WinHttp.7z (322.42 KB, 下载次数: 268)

评分

参与人数 1银币 +1 收起 理由
0ximi + 1 很给力!

查看全部评分

最新评论

H.green 发表于 2015-8-30 10:38:51

好东西,顶了!

好东西,顶了!
saturn88 发表于 2016-9-6 00:49:48

用了,非常顺手,但是有一点就是cookie这块貌似获取不到 httponly cookie

用了,非常顺手,但是有一点就是cookie这块貌似获取不到 httponly cookie

评分

参与人数 1银币 +1 收起 理由
heize + 1 代码很久了,准备更新呢,有问题加我Q:758.

查看全部评分

saturn88 发表于 2016-9-8 10:34:58

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=72094&ptid=12926][c

saturn88 发表于 2016-9-6 00:49
用了,非常顺手,但是有一点就是cookie这块貌似获取不到 httponly cookie

您的qq后面几位看不到了。。方便化的在说下,我加您
cdaz11 发表于 2016-12-17 18:02:54
类里重定向的代码有错,第75行,
  1. this.Object.Option(6,redirec);//错误代码
  2. this.Object.setOption(6,redirec);//正确代码
复制代码
Danboy 发表于 2017-7-9 14:06:02
import whttp;这个库在哪,找不到啊

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-25 19:28 , Processed in 0.046875 second(s), 22 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表