卍 花径不曾缘客扫, 蓬门今始为君开. 古佛拈花方一笑, 痴人说梦已三生!

httplib2 – Python下的http请求终结者

Python 拈花古佛 7553℃ 0评论 繁體

httplib2功能介绍:http://code.google.com/p/httplib2/
httplib2实例页面:http://code.google.com/p/httplib2/w/list
httplib2问题提交:http://code.google.com/p/httplib2/issues/list

官方的样例还是比较全的,这里就直接贴一下吧。

Simple Retrieval

import httplib2 
h = httplib2.Http(".cache") 
resp, content = h.request("http://example.org/", "GET")

Authentication

import httplib2  
h = httplib2.Http(".cache")  
h.add_credentials('name', 'password')  
resp, content = h.request("https://example.org/chap/2",   ##ssl + base认证  
    "PUT", body="This is text",   
    headers={'content-type':'text/plain'} )

Cache-Control

import httplib2  
h = httplib2.Http(".cache")  
resp, content = h.request("http://bitworking.org/")  #请求被缓存,下次还会用这个缓存而不去发送新的请求,缓存生效时间有web配置决定  
 ...  
resp, content = h.request("http://bitworking.org/",   
    headers={'cache-control':'no-cache'})   ##设置不用缓存,当次将不用缓存,而是直接发一个新的请求

Forms

>>> from httplib2 import Http  
>>> from urllib import urlencode  
>>> h = Http()  
>>> data = dict(name="Joe", comment="A test comment")  
>>> resp, content = h.request("http://bitworking.org/news/223/Meet-Ares", "POST", urlencode(data))  
>>> resp  
{'status': '200', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding,User-Agent',  
 'server': 'Apache', 'connection': 'close', 'date': 'Tue, 31 Jul 2007 15:29:52 GMT',   
 'content-type': 'text/html'}

Cookies

#!/usr/bin/env python  
  
import urllib  
import httplib2  
  
http = httplib2.Http()  
  
url = 'http://www.example.com/login'     
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}  
headers = {'Content-type': 'application/x-www-form-urlencoded'}  
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))  
  
headers = {'Cookie': response['set-cookie']}   ###将获得cookie设置到请求头中,以备下次请求使用  
  
url = 'http://www.example.com/home'     
response, content = http.request(url, 'GET', headers=headers)  ##本次请求就不用带用户名,密码了

Proxies

import httplib2  
import socks      ##需要第三方模块  
  
httplib2.debuglevel=4  
h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost', 8000))  
r,c = h.request("http://bitworking.org/news/")

 

Http对象的构造方法:

Http对象的构造方法:  
   __init__(self, cache=None, timeout=None, proxy_info=None, ca_certs=None, disable_ssl_certificate_validation=False)  
       proxy_info 的值是一个 ProxyInfo instance.  
        
      'cache':  
        存放cache的位置,要么为字符串,要么为支持文件缓存接口的对象  
        
      timeout:  
        超时时间,默认时会取python对socket链接超时的值  
        
      ca_certs:  
        一个用于ssl服务器认证用的包涵了主CA认证的文件路径,默认会使用httplib2绑定的证书  
        
      disable_ssl_certificate_validation:  
        确定是否进行ssl认证  
    
  add_certificate(self, key, cert, domain)  
      添加一个ssl认证key和文件  
    
  add_credentials(self, name, password, domain='')  
      添加一个用户名,密码信息  
    
  clear_credentials(self)  
      删除掉所有的用户名,密码信息,貌似还是可以存多个用户名和密码  
  
     
   Http.request(self, uri, method='GET', body=None, headers=None, redirections=5, connection_type=None)  
   说明:  
   执行单次的http请求  
     
   uri:  
   一个以'http' 或 'https'开头的资源定位符字串,必须是一个绝对的地址  
     
   method:  
   支持所有的http请求方式。如: GET, POST, DELETE, etc..  
     
   body:  
   请求的附件数据,一个经过urllib.urlencode编码的字符串  
     
   headers:  
   请求头信息,一个字典对象  
     
   redirections:  
   最大的自动连续的重定向次数默认为5  
     
   返回:  
   (response, content)元组,response是一个httplib2.Response对象,content就是包含网页源码的字符串  
     
     
   httplib2.Response对象  
   其实就是一个包含所有头信息的字典,因为它本身就是集成自字典对象的

另外,httplib2模块本身还有其它的对象或属性,可以通过print dir(httplib2)来查看

转载请注明:拈花古佛 » httplib2 – Python下的http请求终结者

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址