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)来查看

  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2993133.html
Copyright © 2011-2022 走看看