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",))
# 以下这个是错误实例
print(httplib2.HTTPConnectionWithTimeout("www.baidu.com",,True,))

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()

httplib模块:(一个相对底层的http请求模块)的更多相关文章

  1. Django(48)drf请求模块源码分析

    前言 APIView中的dispatch是整个请求生命过程的核心方法,包含了请求模块,权限验证,异常模块和响应模块,我们先来介绍请求模块 请求模块:request对象 源码入口 APIView类中di ...

  2. iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)

    一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...

  3. Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块

    Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块 ...

  4. python 多线程,tthread模块比较底层,而threading模块是对thread做了一些包装,multithreading

    Python多线程详解 2016/05/10 · 基础知识 · 1 评论· 多线程 分享到:20 本文作者: 伯乐在线 - 王海波 .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 1.多线程的 ...

  5. django-rest-framework-源码解析002-序列化/请求模块/响应模块/异常处理模块/渲染模块/十大接口

    简介 当我们使用django-rest-framework框架时, 项目必定是前后端分离的, 那么前后端进行数据交互时, 常见的数据类型就是xml和json(现在主流的是json), 这里就需要我们d ...

  6. 爬虫模块介绍--request(发送请求模块)

    爬虫:可见即可爬   # 每个网站都有爬虫协议 基础爬虫需要使用到的三个模块 requests 模块  # 模拟发请求的模块 PS:python原来有两个模块urllib和urllib的升级urlli ...

  7. IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求

    IIS7的设置和IIS6有很多不同之处,这里提到的的是一个上传附件大小设置的问题. HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 原因:Web ...

  8. SeaJS:一个适用于 Web 浏览器端的模块加载器

    什么是SeaJS?SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Definit ...

  9. requests(一): 发送一个json格式的post请求

    今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...

随机推荐

  1. Day_02-Python的循环结构

    循环结构 应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令.当然你可能已经注意 ...

  2. Jupyter配置Spark开发环境

    兄弟连大数据培训和大家一起探究Jupyter配置 Spark 开发环境 简介 为Jupyter配置Spark开发环境,可以安装全家桶–Spark Kernel或Toree,也可按需安装相关组件. 考虑 ...

  3. 洛谷 P4570 BZOJ 2460 [BJWC2011]元素

    Time limit 20000 ms Memory limit 131072 kB OS Linux 解题思路 看题解可知 我们将矿石按照魔法值降序排序,然后依次将矿石编号放入线性基(突然想起线代里 ...

  4. 【bzoj3463】[COCI2012] Inspector

    *题目描述: 在一个小国家中,一个新的小镇终于建成了!如往常一样,Mirko获得了“首席税务巡查员”的职位.他的任务是保证正确地计算各公司的收入情况.一共有N家办公室坐落在主干道上,从左到右被编号为1 ...

  5. Java如何进行Base64的编码(Encode)与解码(Decode)

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  6. 音频学习(一)-离线播放(AVAudioPlayer)

    最后更新:2017-05-23 方法 - (nullable instancetype)initWithContentsOfURL:(NSURL *)url error:(NSError **)out ...

  7. vue2.0 之 douban (一)框架搭建 及 整体布局

    1.创建豆瓣项目 我们通过官方vue-cli初始化项目 vue init webpack douban 填写项目描述,作者,安装vue-router 初始化后,通过npm install安装依赖 cd ...

  8. 从数据库、页面加载速度角度思考 id设计 sku asin

    (已对数据进行字符串替换,去身份识别.隐私跟踪) 12-13-14-15-16-18岁20女孩夏装初中高中学生韩版上衣服短袖T恤衫-tmall.com天猫 https://detail.tmall.c ...

  9. VUE Right-hand side of ‘instanceof’ is not an object 解决方案

    这里要注意一下, props之前没注意写成了   props: {     wrd: '',       sname:'zs'   },   这样是不能被解析成object的,所以一定要写的更具体一点 ...

  10. git 还原、恢复、回退

    通过git revert来实现线主干代码的回滚.如下命令 对于 merge类型的commit对象,还需要"-m"参数 git revert -m 1  commit-id 对于普通 ...