博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python--httplib模块使用
阅读量:4054 次
发布时间:2019-05-25

本文共 2659 字,大约阅读时间需要 8 分钟。

转自:http://blog.csdn.net/five3/article/details/7078951

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] 
  1. 实例:  
  2. conn1 = HTTPConnection('www.baidu.com:80')  
  3. conn2 = HTTPconnection('www.baidu.com',80)  
  4. conn3 = HTTPConnection('www.baidu.com',80,True,10)  
  5. 错误实例:  
  6. 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] 
  1. 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] 
  1. conn.request('GET''/''', {
    'user-agent':'test'})  

返回:

无返回,其实就是相对于向服务其发送数据,但是没有最后回车



4、HTTPConnection对象getresponse方法

说明:

获取一个http响应对象,相当于执行最后的2个回车


原型/实例:

[python] 
  1. res = conn.getresponse()  

返回:

HTTPResponse对象



5、HTTPConnection对象close()方法

说明:

关闭指定的httpconnect链接


实例:

[python] 
  1. conn.close()  


6、HTTPResponse对象read方法

说明:

获得http响应的内容部分,即网页源码


原型:

body 
= res.read([amt])

amt: 读取指定长度的字符,默认为空,即读取所有内


实例:

[python] 
  1. body = res.read()  
  2. 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] 
  1. #!/usr/bin/env python    
  2. # -*- coding: utf-8 -*-    
  3. import httplib  
  4. import urllib  
  5.   
  6.    
  7. def sendhttp():  
  8.     data = urllib.urlencode({
    '@number'12524'@type''issue''@action''show'})     
  9.     headers = {
    "Content-type""application/x-www-form-urlencoded",  
  10.                "Accept""text/plain"}  
  11.     conn = httplib.HTTPConnection('bugs.python.org')  
  12.     conn.request('POST''/', data, headers)  
  13.     httpres = conn.getresponse()  
  14.     print httpres.status  
  15.     print httpres.reason  
  16.     print httpres.read()  
  17.              
  18.                 
  19. if __name__ == '__main__':    
  20.     sendhttp()   

当然还有其它的一些信息,比如异常类型,比如http的code对应表及查询字典等等,可以直接参考官网httplib文档:
你可能感兴趣的文章
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>