赞
踩
测试遇到个很小的需求:发送post请求,但只需要改变其中某几个键的键值。
那首先呢,我们先搞一下单条数据进行post请求。
一、单条数据
现成的方法,直接用就ok了。
import requests
import json
#初始化payload
payload ={
"a": "5b71249736de6472c6e6832c484fb20210203010",
"b": "test",
"c": [
"c1",
"c2",
"c3"
]
}
data=json.dumps(payload)
r=requests.post("post请求地址", data=data, headers={"Content-Type": "application/json"})
print(r.text)
如果有很多条数据,我们该如何呢。
二、多条请求数据
我们可以通过txt来实现,读出来后逐条请求接口。
txt数据如图所示:
import requests
import json
#你的txt文件所在的路径
path = r'D:\shuzilm\compare\post.txt'
f = open(path)
for line in f:
#debug时发现每行数据有换行符,我们把换行符替换了
data=line.replace('\n','')
r=requests.post("post请求地址", data=data, headers={"Content-Type": "application/json"})
print(r.text)
现在想想我们这个小小需求吧,只需要修改其中几个键的键值,那我们可以替换这几个键的键值就行。
三、替换某些键的键值
txt中我们可以只存需要修改的键的键值,这样只用初始化一次body就够了,txt如图所示:
import requests import json #初始化payload payload ={ "a": "5b71249736de6472c6e6832c484fb20210203010", "b": "test", "c": [ "c1", "c2", "c3" ] } path = r'D:\shuzilm\compare\post.txt' f = open(path) for line in f: #debug时发现每行数据有换行符,我们把换行符替换了 data1=line.replace('\n','') #txt中两列数据我们按|分隔变为数组 data2 = data1.split('|') #多列数据我们赋值就变得简单了 payload["a"] = data2[0] payload["b"] = data2[1] r = requests.post("post请求地址", json=payload, headers={"Content-Type": "application/json"}) print(r.text)
在新的版本的requests里面,除了对dict格式去编码以外,还可以使用json格式直接去传递,然后它就会被自动编码。这是 2.4.2 版的新加功能:
这样子是不是很简单就可以去实现了呢,而不需要像一里面需要转换为string之类的呢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。