zoukankan      html  css  js  c++  java
  • httplib2python下的http请求终结者(转)

    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

    [python] view plaincopy
    1. import httplib2  
    2. h = httplib2.Http(".cache")  
    3. resp, content = h.request("http://example.org/""GET")  

     

    Authentication

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

    Cache-Control

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

    Forms

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

    Cookies

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

    Proxies

    [python] view plaincopy
    1. import httplib2  
    2. import socks      ##需要第三方模块  
    3.   
    4. httplib2.debuglevel=4  
    5. h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost'8000))  
    6. r,c = h.request("http://bitworking.org/news/")  

     

    ======================================================================================

    下面是我自己对模块功能的尝试:

     

    [python] view plaincopy
    1.    Http对象的构造方法:  
    2.    __init__(self, cache=None, timeout=None, proxy_info=None, ca_certs=None, disable_ssl_certificate_validation=False)  
    3.        proxy_info 的值是一个 ProxyInfo instance.  
    4. |        
    5. |      'cache':  
    6.         存放cache的位置,要么为字符串,要么为支持文件缓存接口的对象  
    7. |        
    8. |      timeout:  
    9.         超时时间,默认时会取python对socket链接超时的值  
    10. |        
    11. |      ca_certs:  
    12.         一个用于ssl服务器认证用的包涵了主CA认证的文件路径,默认会使用httplib2绑定的证书  
    13. |        
    14. |      disable_ssl_certificate_validation:  
    15.         确定是否进行ssl认证  
    16. |    
    17. |  add_certificate(self, key, cert, domain)  
    18. |      添加一个ssl认证key和文件  
    19. |    
    20. |  add_credentials(self, name, password, domain='')  
    21. |      添加一个用户名,密码信息  
    22. |    
    23. |  clear_credentials(self)  
    24. |      删除掉所有的用户名,密码信息,貌似还是可以存多个用户名和密码  
    25.   
    26.      
    27.    Http.request(self, uri, method='GET', body=None, headers=None, redirections=5, connection_type=None)  
    28.    说明:  
    29.    执行单次的http请求  
    30.      
    31.    uri:  
    32.    一个以'http' 或 'https'开头的资源定位符字串,必须是一个绝对的地址  
    33.      
    34.    method:  
    35.    支持所有的http请求方式。如: GET, POST, DELETE, etc..  
    36.      
    37.    body:  
    38.    请求的附件数据,一个经过urllib.urlencode编码的字符串  
    39.      
    40.    headers:  
    41.    请求头信息,一个字典对象  
    42.      
    43.    redirections:  
    44.    最大的自动连续的重定向次数默认为5  
    45.      
    46.    返回:  
    47.    (response, content)元组,response是一个httplib2.Response对象,content就是包含网页源码的字符串  
    48.      
    49.      
    50.    httplib2.Response对象  
    51.    其实就是一个包含所有头信息的字典,因为它本身就是集成自字典对象的  


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

  • 相关阅读:
    代码那些事儿之葫芦娃救爷爷
    《数学计算出题系统》功能规格说明书
    有点难
    肝不动了
    so easy, too happy
    新学期的展望
    Android Gradle插件
    重学数据结构和算法(三)之递归、二分、字符串匹配
    重学数据结构和算法(二)之二叉树、红黑树、递归树、堆排序
    重学数据结构和算法(一)之复杂度、数组、链表、栈、队列、图
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2993133.html
Copyright © 2011-2022 走看看