Requests 是用python语言编写的第三方库,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,完全满足 HTTP 测试需求,多用于接口测试,为了日后应用至工作中我便开始了学习
参考出处:https://www.jianshu.com/p/d78982126318

首先,安装第三方库

pip install requests

其次,使用requests

import requests

Request库的一些常用方法

1.requests.request(method,url,**kwargs)

构造并发送一个Request对象,返回一个Response对象,支撑各方法的基础方法

method:新建Request对象要使用的HTTP方法,包括:GET,POST,PUT,DELETE等
url:新建Request对象的URL链接
**kwargs:13个控制访问的可选参数

(1)params:字典或字节序列,作为参数增加到url中

paramsValue={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://www.baidu.com',params=paramsValue)
print(r.url)
#执行结果:http://www.baidu.com/?key1=value1&key2=value2;若paramsValue为字符串,结果相仿

(2)data:字典、字节序列,文件,作为Request对象body的内容

#字典
dataDicValue={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://www.baidu.com',data=dataDicValue)
#字节序列
dataStrValue='test'
r=requests.request('GET','http://www.baidu.com',data=dataStrValue)
#文件
dataFileValue={'file':open('test.csv','rb')}
r=requests.request('POST','http://www.baidu.com',data=dataFileValue)

(3)json:JSON格式的数据,作为Request对象body的内容

jsonValue={'key1':'value1','key2':'value2'}
r=requests.request('POST','http://www.baidu.com',json=jsonValue)

(4)headers:字典格式,HTTP请求头,作为Request对象Header的内容

headerValue={'user-agent': 'Chrome/10'}
r=requests.request('POST','http://www.baidu.com',headers=headerValue)
print(r.headers)
#{'Accept-Ranges': 'bytes', 'Cache-Control': 'max-age=86400', 'Connection': 'Keep-Alive', 'Content-Encoding': 'gzip', 'Content-Length': '4867', 'Content-Type': 'text/html', 'Date': 'Wed, 15 Aug 2018 10:22:42 GMT', 'Etag': '"3dcd-560eb5cea6700"', 'Expires': 'Thu, 16 Aug 2018 10:22:42 GMT', 'Last-Modified': 'Fri, 22 Dec 2017 10:34:36 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM "', 'Server': 'Apache', 'Set-Cookie': 'BAIDUID=6AE11C63536CF472F9B403B1BE467161:FG=1; expires=Thu, 15-Aug-19 10:22:42 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1', 'Vary': 'Accept-Encoding,User-Agent'}

(5)cookies:字典或CookieJar,Request中的cookie

#字典
cookieDicValue={'key1':'value1','key2':'value2'}
r=requests.request('POST','http://www.baidu.com',cookies=cookieDicValue)
print(r.cookies)
#<RequestsCookieJar[]>
#CookieJar
cookiesJarValue=cookiejar.CookieJar()
r=requests.request('POST','http://www.baidu.com',cookies=cookiesJarValue)
print(r.cookies)
#<RequestsCookieJar[]>

(6)files:字典,形式为{filename: fileobject},表示要上传的多个部分

filesValue = {'file': open('test.csv', 'rb')}
r = requests.request('POST', 'http://www.baidu.com', files=filesValue)

(7)auth:Auth 句柄或 (user, pass) 元组

#Auth
authBasicValue=HTTPBasicAuth('username','password')
r = requests.request('POST', 'http://www.baidu.com', auth=authBasicValue)
#(user,pass)元组
authTupValue=('username','password')
r=requests.request('POST','http://www.baidu.com',auth=authTupValue)

(8)timeout:等待服务器数据的超时限制,是一个浮点数,或是一个(connect timeout, read timeout) 元组

#浮点数(单位秒)
timeoutFloatValue=12
r=requests.request('POST','http://www.baidu.com',timeout=timeoutFloatValue)
#(connect timeout, read timeout) 元组;
#connect timeout:建立连接所用的时间;适用于网络状况正常的情况下,两端所用的时间
#readtimeout:建立连接后从服务器读取到可用资源所用的时间;正常情况下,当我们发出请求时可以收到请求的结果,也就是页面上展示的内容,但是当网络状况很差的时候,就会出现页面上无法展示出内容的情况。另外当我们使用爬虫或者其他全自动的程序时,无法判断当前的网络状况是否良好,此时就有了ReadTimeout的用武之地了,通过设置ReadTimeout参数
#注意:在我们使用需要设置这两项参数的服务或程序时,应该对两项参数一起设置。 一般而言两项参数的数值可以设置成一样的,但可以把ReadTimeout设置的长一点,ConnectTimeout可以相对比较短,这是源于我们的网络状况一般较为稳定,连接时很少出现问题,但是读取时因为数据下载时的网络波动,出状况的可能性更大一些。
timeoutTupValue=(10,25)
r=requests.request('POST','http://www.baidu.com',timeout=timeoutTupValue)

(9)allow_redirects:True/False,默认为Ture,重定向开关,为True时表示允许POST/PUT/DELETE方法重定向

#禁止重定向
r=requests.request('POST','http://www.baidu.com',allow_redirects=False)

(10)proxies:字典类型,用于将协议映射为代理的URL

#以下是根据不同协议选择不同代理,也可以使用list+随机方式使用多个代理地址访问URL
poxiesValue={'http':'xxx.xxx.xxx.xxx:xx','https':'xxx.xxx.xxx.xxx:xx'}
r=requests.request('POST','http://www.baidu.com',poxies=poxiesValue)

(11)verify:True/False,默认为True,认证SSL证书开关;为True时会验证SSL证书,也可以使用cert参数提供一个CA_BUNDLE路径;为False时,忽略SSL验证

#忽略SSL验证
r=requests.request('POST','http://www.baidu.com',varify=False)

(12)stream:True/False,默认为True,获取body立即下载开关,为False会立即下载响应头和响应体;为True时会先下载响应头,当Reponse调用content方法时才下载响应体

# stream为True时下载步骤
#stream设置为True,直接下载响应头
r=requests.request('POST','http://www.baidu.com',stream=True)
#调用content方法下载响应体
r.content

(13)cert:为字符串时应是 SSL 客户端证书文件的路径(.pem格式,文件路径包含密钥和证书),如果是元组,就应该是一个(‘cert’, ‘key’) 二元值对

#文件路径
requests.request('POST','http://www.baidu.com',cert='/True_path/server.pem')
#元组
certTupValue=('/value/value.cert','/value/key')
requests.request('POST','http://www.baidu.com',cert=certTupValue)

2.requests.get(url, params=None, **kwargs)
请求获取URL位置的资源

url:新建Request对象的URL链接
params:字典或字节序列,作为参数增加到url中
**kwargs:12个控制访问的可选参数(除params外其他同1)

3.requests.head(url, **kwargs)
请求获取URL位置资源的响应消息报告,即获得该资源的响应的头部信息

url:新建Request对象的URL链接
**kwargs:13个控制访问的参数(同1)

4.requests.post(url, data=None, json=None, **kwargs)
请求向URL位置的资源后附加新的数据

url:新建Request对象的URL链接
data:字典、字节序列,文件,作为Request对象body的内容
json:JSON格式的数据,作为Request对象body的内容
**kwargs:11个控制访问参数(除data,json外其他同1)

5.requests.put(url, data=None, **kwargs)
请求向URL位置存储的一个资源,覆盖原URL位置的资源

url:新建Request对象的URL链接
data:字典、字节序列,文件,作为Request对象body的内容
**kwargs:12个控制访问参数(除data外其他同1)

6.requests.patch(url, data=None, **kwargs)
请求局部更新URL位置的资源,即改变该处资源的部分内容

url:新建Request对象的URL链接
data:字典、字节序列,文件,作为Request对象body的内容
**kwargs:12个控制访问参数(除data外其他同1)

7.requests.delete(url, **kwargs)
请求删除URL位置存储的资源

url:新建Request对象的URL链接
**kwargs:13个控制访问参数(同1)

作者:nzdnllm
链接:https://www.jianshu.com/p/c7b25bc3520e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

request 里面参数设置 (有空瞄下)的更多相关文章

  1. jmeter—JDBC request动态参数设置

    jmeter—JDBC request动态参数设置 重要参数说明: Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable ...

  2. darwin转发时,摄像机在3G和4G模式下的参数设置

    darwin转发时,摄像机在3G和4G模式下的参数设置 我们转发的是摄像机的子码流,因为在不同的网络环境下,为了达到当前网络环境下最清晰,最流畅的目标,在转发前要根据使用的是3G还是4G及信号强度来自 ...

  3. 解决Win10系统下 C# DateTime 出现星期几的问题 解决ASP.NET MVC 接受Request Playload参数问题

    解决Win10系统下 C# DateTime 出现星期几的问题 昨天晚上写代码的时候偶然发现 DateTime 里出现了星期几,当时一阵凌乱,去网上百度没有详细解决办法,很多人说可以用用 ToStri ...

  4. request.getParameter(“参数名”) 中文乱码解决方法

    今天浏览项目时候,遇到一个问题,页面用${requestScope.参数名 }获取的值是乱码,然后搜了一下,最后说是编码的问题,附上查找的结果: 在Java 开发中,如果框架搭建的不完善或者初学者在学 ...

  5. Request 接收参数乱码原理解析二:浏览器端编码原理

    上一篇<Request 接收参数乱码原理解析一:服务器端解码原理>,分析了服务器端解码的过程,那么浏览器是根据什么编码的呢? 1. 浏览器解码 浏览器根据服务器页面响应Header中的“C ...

  6. Tomcat性能参数设置

    Tomcat性能参数设置 Tomcat性能参数设置 博客分类: Java LinuxTomcat网络应用多线程Socket 默认参数不适合生产环境使用,因此需要修改一些参数 1.修改启动时内存参数.并 ...

  7. tomcat端口修改以及jvm启动参数设置

    1.端口更改:找到config目录下server.xml文件 如下 <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to t ...

  8. weblogic基本目录介绍,位数查看,启动与发布项目,修改JVM参数,设置项目为默认项目

    这里的基本目录%base%表示安装目录,如我的目录为:E:/weblogic就是%base% 1.weblogic目录介绍 weblogic主要的目录介绍: 1.日志目录: 每个domain(域)都有 ...

  9. postman全方位讲解(有空看下)

    Postman 接口测试神器 Postman 是一个接口测试和 http 请求的神器,非常好用. 官方 github 地址: https://github.com/postmanlabs Postma ...

随机推荐

  1. jquery.validation.js 使用

    引用文件: "~/assets/global/plugins/jquery-validation/js/jquery.validate.min.js", "~/asset ...

  2. vue中动态添加div

    知识点:vue中动态添加div节点,点击添加,动态生成div,点击删除,删除对应的div,其中数组的长度是动态改变的,如在from表单中应用,直接在提交方法中,获得list,获取所填的元素即可 效果: ...

  3. TCP状态迁移

    TCP的状态变迁图 CLOSED:表示初始状态.对服务端和C客户端双方都一样. LISTEN:表示监听状态.服务端调用了listen函数,可以开始accept连接了. SYN_SENT:表示客户端已经 ...

  4. install ros-indigo-pcl-ros

    CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake: (find_package): Could not fi ...

  5. h5桌面通知Notification

    H5中的桌面通知Notification 前言: 对于一个前端开发者,逛网页总会留意一些新奇的功能,对于上班总会用到Teambition的我,总是能收到Notification...所以今天就来研究下 ...

  6. asp.net中的时间日期选择控件

    asp.net中的时间日期选择控件 Posted on 2008-07-17 17:37 飛雪飄寒 阅读(22922) 评论(6) 编辑 收藏     在系统中经常需要进行时间日期选择(比如查询时间范 ...

  7. 『转』Kaspersky Internet Security for Android &KMS – 免费6个月

    卡巴越南的活动,需要注册账户,完成小调查,24小时内发送激活码,激活码3个月内有效.建议用谷歌翻译下网站.KIS for Android 的激活码也通用于 Kaspersky Mobile Secur ...

  8. pixi之加载纹理贴图和精灵类的使用

    因为之前看过three.js的缘故,所以pixi学习起来也是很快的,主要就是熟悉pixi的API,所以,在这里记录一下pixi常用API,废话不多说,下面上干货. 一.为你的PIXI场景添加图片(精灵 ...

  9. 实现react中的自动保存--定时任务

    1. 定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或 ...

  10. 重启Tomcat还可以这样玩的哦