python2018上海脱产_python接口自动化27-urlencode编码%E6%82%A0%E6%82%A0与解码
前言
urllib.parse 里面三个方法:urlencode,quote,unquote详解。
在做接口自动化过程中,http协议在发送url的时候,是以urlencode的编码格式传过去的,通常requests库会帮我们自动处理了。但是服务端返回的url地址,有时候是以urlencode的编码传过来的,我们需要从url上提取一些参数信息,这时候就需要对url解码了。
为什么需要urlencode编码
通常如果一样东西需要编码,说明其并不适合直接传输。原因多种多样,如Size过大,包含隐私数据。对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。
例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。
urlencode编码
先看一个python请求案例
import requests
url = "http://www.example.com/"
par = {
"a": "上海",
"b": "悠悠"
}
body = {
"content": "悠悠",
"charsetSelect": "utf-8",
"en": "UrlEncode编码"
}
r = requests.post(url, params=par, data=body)
print(r.url)
运行结果:
通过fiddler抓包看raw,会发现传过去的request部分,是经过了urlencode编码的(编码的操作requests库已经帮我们自动处理了,这就是requests人性化的地方)
urlencode编码
如果我们想自己操作,对字符串传入的字典参数进行urlencode编码,就需要用到两个方法urlencode和quote
urlencode方法传字典参数
from urllib.parse import urlencode, quote, unquote
# urlencode方法参数是字典
body = {
"content": "悠悠",
"charsetSelect": "utf-8",
"en": "UrlEncode编码"
}
print(urlencode(body))
运行结果:
content=%E6%82%A0%E6%82%A0&charsetSelect=utf-8&en=UrlEncode%E7%BC%96%E7%A0%81
quote传字符串参数
# quote方法参数是字符串
print(quote("上海-悠悠"))
url = "http://www.example.com/?a=上海&b=悠悠"
print(quote(url))
运行结果:
%E4%B8%8A%E6%B5%B7-%E6%82%A0%E6%82%A0
http%3A//www.example.com/%3Fa%3D%E4%B8%8A%E6%B5%B7%26b%3D%E6%82%A0%E6%82%A0
urlencode解码
如果返回的数据里面有urlencode编码的字符串,类似于%E4%B8%8A%E6%B5%B7&b=%E6%82%A0%E6%82%A0这种格式,可以使用unquote方法解码
import requests
from urllib.parse import urlencode, quote, unquote
url = "http://www.example.com/"
par = {
"a": "上海",
"b": "悠悠"
}
body = {
"content": "悠悠",
"charsetSelect": "utf-8",
"en": "UrlEncode编码"
}
r = requests.post(url, params=par, data=body)
print(r.url)
print(unquote(r.url))
运行结果:
python2018上海脱产_python接口自动化27-urlencode编码%E6%82%A0%E6%82%A0与解码相关推荐
- python调用接口时传多个参数_python接口自动化11-post传data参数案例
前言: 前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数. 一.登录jenkins抓包 1.登录jenkins,输入账 ...
- python接口自动化关联参数_python接口自动化7-参数关联
前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...
- python调用文件下载接口_python接口自动化21-下载excel文件(Content-Type:octets/stream)...
前言 Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢? 抓下载接口 1.下载的场景如 ...
- python接口自动化pdf悠悠_python接口自动化13-data和json参数傻傻分不清【悠悠】
https://www.cnblogs.com/yoyoketang/p/7231384.html 前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参 ...
- python自动化接口测试中的cookies怎么实现_Python接口自动化之cookie、session应用
------·今天距2021年260天·------ 这是ITester软件测试小栈第112次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化-requests模块之post请 ...
- soapui工具_python接口自动化(四)--接口测试工具介绍(详解)
简介 "工欲善其事必先利其器",通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进 ...
- python 封装_python接口自动化学习笔记(封装方法用于读取excel)
本文是为难得干货文章 (是位大佬所写哦) 大家好,我是测试君. 下面分享一波Python接口自动化文章: 本篇是使用xlrd实现的对excel的数据进行读取,xlrd网上demo很多,不做过多叙述,下 ...
- python程序如何封装成接口_python接口自动化如何封装获取常量的类
这篇文章主要介绍了python接口自动化如何封装获取常量的类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景: 一.执行case的过程: 首先需 ...
- 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)
python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...
最新文章
- pd.read_csv读取txt时整型变成浮点型问题解决
- 模型训练 准确率下降_手写批量线性回归算法:在Python3中梯度下降方法实现模型训练
- 王道考研 计算机网络7 TCP/IP参考模型
- DCOM EXCE权限配置问题
- linux 实验指导书,linux操作系统实验指导书新 - 图文
- Exchange 2016 OWA登陆异常
- excel乘法公式怎么输入_精选43个Excel表格的操作技巧| 推荐收藏
- 创建My SQL 数据库
- 手柄游戏之《恶魔城暗影之王》推荐
- [python]python生成md5
- 一些常见html5语义化标签
- JAVA汉字转拼音工具类
- Total Control的深入用法,如何使用脚本实现启动或重启指定App
- stm32中断方式和DMA方式完成串口通信
- python安装random_如何安装python randon
- APP消息智能推送有什么特点
- Oracle数据库的dblink连接
- 财务自由?这样做微信开发可以吗?
- hook(2)Activity启动流程,安卓开发实战
- php168,phpcms,dedecms 使用感受