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
浙公网安备 33010602011771号