• httplib模块:(一个相对底层的http请求模块)


    httplib是一个相对底层的http请求模块,期上有专门的包装模块,如urllib内建模块,goto第三方模块,但是封装的越高就约不灵活,比如urllib模块里的请求错误是就不会返回结果页的内容,只有头信息.对于某些需要检测错误请求返回值得场景就不适用,所以就用到这个模块了

    1.class httplib.HTTPConnection

    说明:该类用于创建一个http类的请求连接

    原型:

    HTTPConnection(host[prot[strict[timeout]]])

    host请求不允许带http://开头

    port:服务器web端口

    strict:是否严格检查请求状态行,就是http1.0/1.1协议版本,即请求的第一行,默认为false,为ture是检查错误会抛出异常

    timeout:单次请求的超时时间,没有默认使用httplib模块内的全局超时时间

    import httplib2
    print(httplib2.HTTPConnectionWithTimeout("www.baidu.com:8080"))
    print(httplib2.HTTPConnectionWithTimeout("www.baidu.com",80))
    # 以下这个是错误实例
    print(httplib2.HTTPConnectionWithTimeout("www.baidu.com",80,True,10))

    2.class httplib.HTTPSCconnection

    说明:

    该类用于创建一个https类型的连接

    原型:HTTPSConnection(host[port[key_file[cert_file[strict[timeout]]]]])

    key_file:一个包含pem格式的私钥文件

    cert_file:一个包含PEM格式的认证文件

    other:其他同http参数

    print(conn3 = httplib2.HTTPSConnectionWithTimeout('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','DELET'等

    url:请求的网页路径,如:'/index.html'

    body:请求是否带数据,该参数是一个字典

    headers:请求是否带有信息,该参数是一个字典,不过键的名字是指定的http头关键字

    实例:

    conn.request('GET', '/', '', {'user-agent':'test'})

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

    HTTPConnection对象getresponse方法

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

    res = conn.getresponse()

    返回:
    HTTPResponse对象

    HTTPConnection对象close()方法

    说明:
    关闭指定的httpconnect链接

    conn.close()

    6、HTTPResponse对象read方法

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

    原型:
    body = res.read([amt])
    amt: 读取指定长度的字符,默认为空,即读取所有内容

    body = res.read()
    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
    总体实例:

    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-  
    import httplib
    import urllib
     
     
    def sendhttp():
        data = urllib.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'})   
        headers = {"Content-type": "application/x-www-form-urlencoded",
                   "Accept": "text/plain"}
        conn = httplib.HTTPConnection('bugs.python.org')
        conn.request('POST', '/', data, headers)
        httpres = conn.getresponse()
        print httpres.status
        print httpres.reason
        print httpres.read()
               
                  
    if __name__ == '__main__':  
        sendhttp() 
  • 相关阅读:
    CF1592F2 Alice and Recoloring 2
    CF1601E Phys Ed Online
    AGC050B Three Coins
    [学习笔记]珂朵莉树(Old Drive Tree)
    CF30E. Tricky and Clever Password
    [学习笔记]替罪羊树
    开源项目MiniOA队员招募通知
    MiniOA开发过程记录(33)自动登录模式
    MiniOA开发过程记录(29)安装Maven
    简易工作流设计思考(欢迎补充和批评)
  • 原文地址:https://www.cnblogs.com/yaozhiqiang/p/10216530.html
Copyright © 2020-2023  润新知