代码改变世界

python实现wininet封装模块

2013-08-21 17:08  楼台别  阅读(515)  评论(0)    收藏  举报

windows对Internet的封装wininet库支持代理,ssl,cookie自动保存,完爆urllib,但是可惜只支持windows,这里就把Python调用这个库的代码发上来。模块的唯一一个方法会返回header和content,如果有需要可以自行修改HttpQueryInfoA函数的参数来查询其他http属性。 

#coding:utf-8 import ctypes from urlparse import urlparse import threading   INTERNET_OPEN_TYPE_PRECONFIG = 0 INTERNET_OPEN_TYPE_PROXY = 3 INTERNET_OPEN_TYPE_DIRECT = 1 INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4   INTERNET_SERVICE_HTTP = 3 INTERNET_FLAG_RELOAD = 2147483648 HTTP_ADDREQ_FLAG_REPLACE = 2147483648 HTTP_ADDREQ蓝盾在线下载http://www.xinlishiye.com/ldzxxz_FLAG_ADD= 536870912 INTERNET_OPEN_TYPE_DIRECT = 1 INTERNET_FLAG_SECURE = 8388608 HTTP_QUERY_STATUS_CODE = 19   wininet = ctypes.windll.LoadLibrary('wininet.dll')   class wininetHttp():       def httpRequest(self,url,method="GET",proxy="",username="",password="",headers="",data="",timeout=20):         """         发出一个HTTP请求         参数:         url: 完整网址         method: 请求方法,可以是GET或POST         proxy: 代理地址         username: 用户名         password: 密码         headers: 协议头         data: 提交数据         timeout: 请求超时值         返回值:         元组(header,html)         """         requestThread = _httprequest(url,method,proxy,username,password,headers,data)         requestThread.daemon = True #线程随主线程一起退出         requestThread.start()         requestThread.join(timeout)         ret = requestThread.getResponse()         return ret     class _httprequest(threading.Thread):         response