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 ...
随机推荐
- LeetCode--139--单词拆分(python)
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词.你可以假设字典中没有重复的 ...
- delphi datetimetounix 和 unixtodatetime 全平台(FIREMONKEY)时区修正
可能平时在转换UNIX时间时没有注意结果,当转换成UNIX时间后,再转换回来对比发现时间和标准时间差了8个小时.网上有相关的修正方法,但仅适用于WINDOWS平台,以下方法全平台适合. datetim ...
- HDU 4300 Clairewd's message ( 拓展KMP )
题意 : 给你一个包含26个小写字母的明文密文转换信息字符串str,第一个表示'a'对应的密文是str[0].'b'对应str[1]……以此类推.接下来一行给你一个另一个字符串,这个字符串由密文+明文 ...
- Spring Cloud架构教程 (七)消息驱动的微服务(核心概念)【Dalston版】
下图是官方文档中对于Spring Cloud Stream应用模型的结构图.从中我们可以看到,Spring Cloud Stream构建的应用程序与消息中间件之间是通过绑定器Binder相关联的,绑定 ...
- [CSP-S模拟测试]:骆驼(模拟+构造)
题目描述 我们都熟悉走马步,现在我们定义一种新的移动方式——骆驼步,它在一个国际棋盘上的移动规则是这样的. 以看出,骆驼步可以向八个方向走动,且不能走出棋盘范围. 现在给出一个$N\times N$的 ...
- [洛谷P3940]:分组(贪心+并查集)
题目传送门 题目描述 小$C$在了解了她所需要的信息之后,让兔子们调整到了恰当的位置.小$C$准备给兔子们分成若干个小组来喂恰当的胡萝卜给兔子们吃.此时,$n$只兔子按一定顺序排成一排,第$i$只兔子 ...
- centos php 安装 decrypt
CentOS php Fatal error: Call to undefined function mcrypt_decrypt() // yum安装没有 #yum install libmcryp ...
- 005-unity3d 添加背景音乐、音效 以及 天空盒子
一.基础知识 1.项目中需要有AudioListener,播放器中播放的声音就是AudioListener组件坐在的位置听到的声音.默认AudioListener是放到Main Camera上.没有A ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_04 数据结构_2_数据结构_队列
先进先出 队列 队列:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入, 而在表的另一端进行删除. 简单的说,采用该结构的集合,对元素的存取有如下的特点: ...
- dict用法
1 dict.items() https://www.runoob.com/python3/python3-att-dictionary-items.html 2 setdefault的用法 注意se ...