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",))
# 以下这个是错误实例
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请求模块)的更多相关文章
- Django(48)drf请求模块源码分析
前言 APIView中的dispatch是整个请求生命过程的核心方法,包含了请求模块,权限验证,异常模块和响应模块,我们先来介绍请求模块 请求模块:request对象 源码入口 APIView类中di ...
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...
- Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 ...
- python 多线程,tthread模块比较底层,而threading模块是对thread做了一些包装,multithreading
Python多线程详解 2016/05/10 · 基础知识 · 1 评论· 多线程 分享到:20 本文作者: 伯乐在线 - 王海波 .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 1.多线程的 ...
- django-rest-framework-源码解析002-序列化/请求模块/响应模块/异常处理模块/渲染模块/十大接口
简介 当我们使用django-rest-framework框架时, 项目必定是前后端分离的, 那么前后端进行数据交互时, 常见的数据类型就是xml和json(现在主流的是json), 这里就需要我们d ...
- 爬虫模块介绍--request(发送请求模块)
爬虫:可见即可爬 # 每个网站都有爬虫协议 基础爬虫需要使用到的三个模块 requests 模块 # 模拟发请求的模块 PS:python原来有两个模块urllib和urllib的升级urlli ...
- IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求
IIS7的设置和IIS6有很多不同之处,这里提到的的是一个上传附件大小设置的问题. HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 原因:Web ...
- SeaJS:一个适用于 Web 浏览器端的模块加载器
什么是SeaJS?SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Definit ...
- requests(一): 发送一个json格式的post请求
今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...
随机推荐
- Day_02-Python的循环结构
循环结构 应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令.当然你可能已经注意 ...
- Jupyter配置Spark开发环境
兄弟连大数据培训和大家一起探究Jupyter配置 Spark 开发环境 简介 为Jupyter配置Spark开发环境,可以安装全家桶–Spark Kernel或Toree,也可按需安装相关组件. 考虑 ...
- 洛谷 P4570 BZOJ 2460 [BJWC2011]元素
Time limit 20000 ms Memory limit 131072 kB OS Linux 解题思路 看题解可知 我们将矿石按照魔法值降序排序,然后依次将矿石编号放入线性基(突然想起线代里 ...
- 【bzoj3463】[COCI2012] Inspector
*题目描述: 在一个小国家中,一个新的小镇终于建成了!如往常一样,Mirko获得了“首席税务巡查员”的职位.他的任务是保证正确地计算各公司的收入情况.一共有N家办公室坐落在主干道上,从左到右被编号为1 ...
- Java如何进行Base64的编码(Encode)与解码(Decode)
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
- 音频学习(一)-离线播放(AVAudioPlayer)
最后更新:2017-05-23 方法 - (nullable instancetype)initWithContentsOfURL:(NSURL *)url error:(NSError **)out ...
- vue2.0 之 douban (一)框架搭建 及 整体布局
1.创建豆瓣项目 我们通过官方vue-cli初始化项目 vue init webpack douban 填写项目描述,作者,安装vue-router 初始化后,通过npm install安装依赖 cd ...
- 从数据库、页面加载速度角度思考 id设计 sku asin
(已对数据进行字符串替换,去身份识别.隐私跟踪) 12-13-14-15-16-18岁20女孩夏装初中高中学生韩版上衣服短袖T恤衫-tmall.com天猫 https://detail.tmall.c ...
- VUE Right-hand side of ‘instanceof’ is not an object 解决方案
这里要注意一下, props之前没注意写成了 props: { wrd: '', sname:'zs' }, 这样是不能被解析成object的,所以一定要写的更具体一点 ...
- git 还原、恢复、回退
通过git revert来实现线主干代码的回滚.如下命令 对于 merge类型的commit对象,还需要"-m"参数 git revert -m 1 commit-id 对于普通 ...