设为首页 收藏本站
查看: 2038|回复: 0

[经验分享] python--httplib模块使用(转)

[复制链接]

尚未签到

发表于 2015-4-28 05:41:30 | 显示全部楼层 |阅读模式
  httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,goto等第三方模块,但是封装的越高就越不灵活,比如urllib模块里请求错误时就不会返回结果页的内容,只有头信息,对于某些需要检测错误请求返回值的场景就不适用,所以就得用这个模块了。
  
  1、class httplib.HTTPConnection
  说明:
该类用于创建一个http类型的请求链接
原型:
HTTPConnection(host[, port[, strict[, timeout]]])
host: 请求的服务器host,不能带http://开头
port: 服务器web服务端口
strict: 是否严格检查请求的状态行,就是http1.0/1.1 协议版本的那一行,即请求的第一行,默认为False,为True时检查错误会抛异常
timeout: 单次请求的超时时间,没有时默认使用httplib模块内的全局的超时时间




[python] view plaincopy

  • 实例:  
  • conn1 = HTTPConnection('www.baidu.com:80')  
  • conn2 = HTTPconnection('www.baidu.com',80)  
  • conn3 = HTTPConnection('www.baidu.com',80,True,10)  
  • 错误实例:  
  • conn3 = HTTPConnection('www.baidu.com:80',True,10)  
  
返回:
HTTPConnection类会实例并返回一个HTTPConnection对象

2、class httplib.HTTPSConnection
说明:
该类用于创建一个https类型的请求链接
原型:
HTTPSConnection(host[, port[, key_file[, cert_file[, strict[, timeout]]]]])
key_file:一个包含PEM格式的私钥文件
cert_file:一个包含PEM格式的认证文件
other:其它同http参数
实例:



[python] view plaincopy

  • conn3 = HTTPSConnection('accounts.google.com',443,key_file,cert_file,True,10)  
  
返回:
同样返回一个HTTPSConnection对象
注意:
要创建https链接,必须要保证底层的socket模块是支持ssl的编译模式,即编译时ssl选项的开关是开着的

3、HTTPConnection对象request方法:
说明:
发送一个请求
原型:
conn.request(method, url[, body[, headers]])
method: 请求的方式,如'GET','POST','HEAD','PUT','DELETE'等
url: 请求的网页路径。如:'/index.html'
body: 请求是否带数据,该参数是一个字典
headers: 请求是否带头信息,该参数是一个字典,不过键的名字是指定的http头关键字
实例:



[python] view plaincopy

  • conn.request('GET', '/', '', {'user-agent':'test'})  
  
返回:
无返回,其实就是相对于向服务其发送数据,但是没有最后回车

4、HTTPConnection对象getresponse方法
说明:
获取一个http响应对象,相当于执行最后的2个回车
原型/实例:



[python] view plaincopy

  • res = conn.getresponse()  
  
返回:
HTTPResponse对象

5、HTTPConnection对象close()方法
说明:
关闭指定的httpconnect链接
实例:



[python] view plaincopy

  • conn.close()  
  
6、HTTPResponse对象read方法
说明:
获得http响应的内容部分,即网页源码
原型:
body = res.read([amt])
amt: 读取指定长度的字符,默认为空,即读取所有内容
实例:



[python] view plaincopy

  • body = res.read()  
  • pbody = res.read(10)  
  
返回:
网页内容字符串

7、HTTPResponse对象的其它方法或属性
方法:
getheaders()
获得所有的响应头内容,是一个元组列表[(name,value),(name2,value2)]
getheader(name[,default])
获得指定的头内容
fileno()
socket的fileno
属性:
msg
所有的头信息,和getheaders方法一样,只不过这个是原始未处理的字符串
status
当次请求的状态
version
当次请求的http协议版本,10是http1.0, 11是http/1.1
reason
当次请求的结果的表述内容,200是ok,404是Not Found

总体实例:



[python] view plaincopy

  • #!/usr/bin/env python   
  • # -*- coding: utf-8 -*-   
  • import httplib  
  • import urllib  
  •   
  •    
  • def sendhttp():  
  •     data = urllib.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'})     
  •     headers = {"Content-type": "application/x-www-form-urlencoded",  
  •                "Accept": "text/plain"}  
  •     conn = httplib.HTTPConnection('bugs.python.org')  
  •     conn.request('POST', '/', data, headers)  
  •     httpres = conn.getresponse()  
  •     print httpres.status  
  •     print httpres.reason  
  •     print httpres.read()  
  •             
  •                
  • if __name__ == '__main__':   
  •     sendhttp()   
  
当然还有其它的一些信息,比如异常类型,比如http的code对应表及查询字典等等,可以直接参考官网httplib文档:http://docs.python.org/library/httplib.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61286-1-1.html 上篇帖子: python技巧31[文件类型+打包EXE] 下篇帖子: python的安装和配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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