python實現post請求的一個小小的需求
阿新 • • 發佈:2021-02-05
測試遇到個很小的需求:傳送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之類的呢。