参考链接:https://developer.51cto.com/art/202102/645705.htm
请求参数:
params = {
"a": 0,
"b": "hello"
}
- 请求参数的值 格式是 JsonList
解决方案:将参数处理下:json.dumps()
params = {
"a": 0,
"b": "hello",
"c": json.dumps([{"a":1,"b":"5.png"},{"a":2,"b":"8.png"}])
}
- 请求参数类型为列表 例如从excel取的类型是字符串 需要将字符串列表转换为列表
解决方案:将参数处理下:json.loads()
params = {
"a": 0,
"b": "hello",
"c": json.loads('["10004","10009"]')
}
- 请求值里面有双引号 // 可以使用单引号
params = {
"a": 0,
"b": "hello",
"c": json.dumps([{"a":1,"b":"5.png"},{"a":2,"b":"8.png"}]),
"appNote": ''
}
- request 安全证书
解决方案:verify=False
requests.post(url, params=params, verify=False)
- 警告
解决方案:增加信息
import urllib3
urllib3.disable_warnings()
- 参数放在 body 里面的 post 请求 data=
requests.post(url, data=params)
- 参数不放在 body 里面的 post 请求 放在QueryString params=
requests.post(url, params=params)
- 如果两个地方同时都有,那么就可以同时传两个,一一对应就可以
params = {
"a": 0,
"b": "hello"
}
body = {
"c":10,
"d":"hi"
}
requests.post(url,params=params,data=body)
- 没有登录 增加cookie
cookies = get_cookie()
requests.post(url, data=params, cookies=cookies)
// 示例写固定路径 项目可用相对路径,文件名参数化
def get_cookie():
txt_file = r"D:\python\data\cookies.txt"
f=open(txt_file,'r')#打开所保存的cookies内容文件
cookies={}#初始化cookies字典变量
for line in f.read().split(';'): #按照字符:进行划分读取
#其设置为1就会把字符串拆分成2份
name,value=line.strip().split('=',1)
cookies[name]=value #为字典cookies添加内容
return cookies
post 请求要注意它的数据类型到底是哪种
- 常见的有四种,并不是只有四种 application/json 是 json= 其他都是 data=
1.第一种是 application/json:{“key1“:”value1”,“keyt2":“value2"}
2.第二种是 application/x-www-form-urlencoded:name1= value1&name2=value2
3.第三种是 multipart/form-data:这一种是表单格式的(文件上传 file=,图片上传等混合式)
4.Content-Type:octets/stream(文件下载)
5.text/xml - 一般格式的请求头
headers = {
'user-agent': ***, //有代理限制的时候加上
'Accept': 'application/json', // 有限制的时候加上
'Content-Type': 'application/x-www-form-urlencoded',
}
requests.post(url, data=params, headers=headers)
- json格式的 请求头
headers = {
'Content-Type':'application/json'
}
requests.post(url, json=params, headers=headers)
// 或者
requests.post(url, data=json.dumps(params), headers=headers)
- 返回 302 重定向
r = requests.post(url, json=params,headers=headers,cookies=cookies,allow_redirects=False)
- 打印输入输出信息 返回格式中文输出乱码
log.info("请求信息:" + str(json.dumps(result['req'],ensure_ascii=False)))
- 打印输入输出信息 json格式转换
log.info("请求信息:" + str(json.dumps(result['req'],cls=NpEncoder)))
import json
import numpy as np
class NpEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, np.integer):
return int(obj)
elif isinstance(obj, np.floating):
return float(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
else:
return super(NpEncoder, self).default(obj)
delect 一个实例
- params放在QueryString的参数
- body_data body里的数据 可为list 字典都支持
params = {
"a": 0,
"b": "hello"
}
body_data = ["hello","world"] # 可为list,字典都行
headers = {
'content-type': 'application/json'
}
cookies = get_cookie(file_name='cookies.txt')
#接口请求
r = requests.delete(url,params = params,json=json.dumps(body_data),headers=headers,cookies=cookies)
文件上传 一个实例 带参数和图片上传
img_name = 'tu.jpeg' #文件名称
file_path = r'd:\img\tu.jpeg' # 文件路径 建议用相对路径
file = open(file_path,"rb") # 文件 也可使用 with open * as file file.read()调用
img_type = 'image/jpeg' # 文件类型
# 除了文件以外其他参数
data = {
"a": 1,
"b": "bbb"
}
files = {
"c" : (img_name,file,img_type)
}
r = requests.post(url, data=data,files=files,headers=headers,cookies=cookies)