Python - 熟悉httplib2

为什么用HttpLib2呢?

比起HttpLib多出什么呢?


1.支持HTTP和HTTPS,当然在这里和httplib是一样的。

两者的文档都这样指出“Note HTTPS support is only available if the socket module was compiled with SSL support.”

是的,要依赖于编译选项


2.支持HTTP 1.1的 Keep-Alive特性,能够在同一个socket连接里使用并发的httprequest.

3.支持授权

support following :

-Basic

-Digest

-WSSE

-HMAC Digest

-Google Account Authentication

当然我觉得Basic和Digest就OK了,如果觉得保密性不够,那最好用HTTPS,这个防火墙也无法根据内容过滤。最近报道说HTTPS也被破解了。不知是怎么破解的?=,=

4.支持Cache

是的,缓存是很多机制都必有的功能,如果http的库没有包含http本身支持的缓存就太可惜了。

如下就能获取带有缓存的HTTP对象h,缓存则存储在当前环境的“.cache"目录下,够简单吧:)

import httplib2
h = httplib2.Http(".cache")

5.提供所有HTTP支持的方法,不只是GET和POST,还包括DELETE,CONNECT吧

6.自动通过”GET“方法,重定向3XX返回值

7.支持deflate和gzip两种资源压缩格式



那我们简单看一下怎么使用吧:

样例1:

import httplib2
#获取HTTP对象
h = httplib2.Http()
#发出同步请求,并获取内容
resp, content = h.request("http://www.soso.com/")
print resp
print content


print resp会现实返回头信息

print content 会显示”搜搜更懂你“相关内容。


样例2:

带有Cache功能的请求:

h2 = httplib2.Http('.cache')
resp2,content2 = h2.request('http://www.baidu.com/')
print resp2
print content2

你就会得到”百度一下,你就知道“相关内容。

并且我们可以再".cache"目录下找到刚才访问的相关内容文件”www.baidu.com,,f03f5717616221de41881be555473a02“,是baidu.com的缓存文件,用记事本打开可知里面带偶内容和httprespond头信息。

怎么验证是否真正cache住了呢?

当然用baidu这个网页测试时,WireShark所捕捉的结果,每次都会有http请求,仔细分析看,返回的Expire信息是当前时间,即立即失效。

但当用”www.163.com“测试时,他的过期时间稍微长一些,大概5分钟吧。所以连续两次请求时,无法通过wireshark活的第二次请求内容,直接返回了cahce信息。


Http.request方法如下:

Http.request(uri[method="GET"body=Noneheaders=Noneredirections=DEFAULT_MAX_REDIRECTSconnection_type=None])

method默认是"GET",并且能指定其他header和最大重定向次数(上面说过httplib2支持自动重定向,但不能无限重定向啊,默认是5)


此外,可以通过add_credentials方法来增加授权用户名和密码,httplib2自动会通过解析repond,并处理HTTP 401 challenge。

Http.add_credentials(name, password[, domain=None])


样例3:
当然,你可以尝试一下是否支持HTTPS,我们的样例当然是google.com了。


h3 = httplib2.Http(".cache")
h3.add_credentials('name', 'password')
resp3, content3 = h3.request("https://www.google.com",
    "GET",headers={'content-type':'text/plain'} )
print resp3
print content3

可以通过add_credentials增加ssl的证书信息。

这里即可得到google.hk的网页信息,可见被重定向了。

then how to deal with cookie?

there is one simple solutin : http://www.testingreflections.com/node/view/5919

其他详见:http://httplib2.googlecode.com/hg/doc/html/index.html



  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值