python使用requests?POST提交一個(gè)鍵多個(gè)值方式
使用requests POST提交一個(gè)鍵多個(gè)值
問題
在使用POST提交數(shù)據(jù)時(shí),想實(shí)現(xiàn)下面這種情況:
requests.post(url, data={'interests':'football','interests':'basketball'})用這種方式肯定是錯(cuò)誤的,因?yàn)樽值渲械膋ey是唯一的。
解決方法
使用元組列表
代碼如下:
import requests
url = 'http://httpbin.org/post'
r = requests.post(url, data=[('interests', 'football'), ('interests', 'basketball')])
r.json()['form']requests庫(kù)的post請(qǐng)求4種類型參數(shù)
用python來驗(yàn)證接口正確性,主要流程有:
- 1 設(shè)置url
- 2 設(shè)置消息頭
- 3 設(shè)置消息體
- 4 獲取響應(yīng)
- 5 解析相應(yīng)
- 6 驗(yàn)證數(shù)據(jù)
Content-Type的格式有四種:分別是application/x-www-form-urlencoded(這也是默認(rèn)格式)、application/json、text/xml以及multipart/form-data格式。
1、application/x-www-form-urlencoded數(shù)據(jù)格式
請(qǐng)看代碼:
datas = {'parameter1':'12345','parameter2':'23456'}
r = requests.post('http://example.com',data=datas)
print(r.content)
print(r.status_code)解說:Reqeusts支持以application/x-www-form-urlencoded數(shù)據(jù)格式發(fā)送post請(qǐng)求,只需要將請(qǐng)求的參數(shù)構(gòu)造成一個(gè)字典,然后傳給requests.post()的data參數(shù)即可。
2、application/json數(shù)據(jù)格式
application/json格式的請(qǐng)求頭是指用來告訴服務(wù)端post過去的消息主體是序列化后的 JSON 字符串。
請(qǐng)看帶代碼:
url = 'http://www.example/post'
s = json.dumps({'key1': 'value1', 'key2': 'value2'})
r = requests.post(url, data=s)
print (r.text)區(qū)別:
這里我們可以發(fā)現(xiàn)Requests模擬post請(qǐng)求時(shí),請(qǐng)求頭格式為application/x-www-form-urlencoded與application/json的主要差別在于請(qǐng)求主體的構(gòu)造格式(前者是鍵值對(duì),后者是JSON串),前者直接用字典傳入,后者用json.dumps()函數(shù)將字典轉(zhuǎn)為JSON串即可。
3、text/xml數(shù)據(jù)格式
請(qǐng)看代碼:
xml = """my xml"""
headers = {'Content-Type': 'application/xml'}
requests.post('http://www.example.com', data=xml, headers=headers)或者把xml作為一個(gè)文件來傳輸:
import requests
def request_ws(request):
with open(archivo_request,"r") as archivo:
? ? request_data = archivo.read()
target_url = "http://127.0.0.1:8000/?wsdl"
headers = {'Content-type':'text/xml'}
data_response = requests.post(target_url, data=request_data, headers=headers)4、multipart/form-data數(shù)據(jù)格式
除了傳統(tǒng)的application/x-www-form-urlencoded表單,我們另一個(gè)經(jīng)常用到的是上傳文件用的表單,這種表單的類型為multipart/form-data,multipart/form-data主要用于文件上傳,當(dāng)我們使用它時(shí),必須讓 form表單的enctype 等于 multipart/form-data
直接來看一個(gè)請(qǐng)求示例,主要:
請(qǐng)看代碼(實(shí)現(xiàn)上傳本地的test.txt文件):
import requests?
files = {"file": open("C:/Users/Administrator/Desktop/test.txt", "rb")}
r = requests.post("http://httpbin.org/post", files=files)?
print(r.text)具體請(qǐng)看實(shí)際例子:
import requests
import json
# 設(shè)置URL
url = "http://demo.9meikf.cn/usystem/auto/getAnswer.do"
# 設(shè)置消息頭
headers = {
? ? "Cookie":"JSESSIONID=EA01FF2B025861F39E29712C97F7DF69;CASTGC=TGT-136-bLQMf0CAikK4BGaydOfIeKd6tWpZQEznJ2ZWdcVl9ofI4LiaQb-cas01.example.org",
? ? "Content-Type":"application/json"
? ? }
# 設(shè)置消息體
data = {"companyId":"48622",
? ? ? ? "nodeId":6,
? ? ? ? "question":"不需要",
? ? ? ? "templateId":"c6f5ad67fc2c11e8a11800163e086942"}
# 獲取相應(yīng)
response=requests.post(url,headers=headers,data=json.dumps(data))
print("Status code:",response.status_code)
print(response.text)
# 解析相應(yīng)
info=response.json()
# 驗(yàn)證數(shù)據(jù)
assert str(info['answer'])=='reject'以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)笑臉檢測(cè)+人臉口罩檢測(cè)功能
這篇文章主要介紹了Python實(shí)現(xiàn)笑臉檢測(cè)+人臉口罩檢測(cè),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
一文教會(huì)你用Python獲取網(wǎng)頁(yè)指定內(nèi)容
Python用做數(shù)據(jù)處理還是相當(dāng)不錯(cuò)的,如果你想要做爬蟲,Python是很好的選擇,它有很多已經(jīng)寫好的類包,只要調(diào)用即可完成很多復(fù)雜的功能,下面這篇文章主要給大家介紹了關(guān)于Python獲取網(wǎng)頁(yè)指定內(nèi)容的相關(guān)資料,需要的朋友可以參考下2022-03-03
python如何調(diào)用php文件中的函數(shù)詳解
這篇文章主要給大家介紹了關(guān)于python如何調(diào)用php文件中函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Numpy中Meshgrid函數(shù)基本用法及2種應(yīng)用場(chǎng)景
NumPy包含很多實(shí)用的數(shù)學(xué)函數(shù),涵蓋線性代數(shù)運(yùn)算、傅里葉變換和隨機(jī)數(shù)生成等功能,下面這篇文章主要給大家介紹了關(guān)于Numpy中Meshgrid函數(shù)基本用法及2種應(yīng)用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2022-08-08
Numpy中如何創(chuàng)建矩陣并等間隔抽取數(shù)據(jù)
這篇文章主要介紹了Numpy中如何創(chuàng)建矩陣并等間隔抽取數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Python3.5裝飾器原理及應(yīng)用實(shí)例詳解
這篇文章主要介紹了Python3.5裝飾器原理及應(yīng)用,結(jié)合具體實(shí)例形式詳細(xì)分析了Python3.5裝飾器的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-04-04
用Python Flask創(chuàng)建簡(jiǎn)潔高效的URL短鏈接服務(wù)
本文介紹了如何使用Python Flask框架創(chuàng)建URL短鏈接服務(wù)。通過詳細(xì)的步驟和代碼示例,讀者將學(xué)會(huì)如何搭建一個(gè)高效的URL縮短服務(wù),包括生成短鏈接、重定向、還原長(zhǎng)鏈接等功能。本文還介紹了如何使用Redis數(shù)據(jù)庫(kù)實(shí)現(xiàn)短鏈接的存儲(chǔ)和管理和如何優(yōu)化短鏈接的訪問速度和可靠性2023-04-04
基于Python實(shí)現(xiàn)人臉識(shí)別相似度對(duì)比功能
人臉識(shí)別技術(shù)是一種通過計(jì)算機(jī)對(duì)人臉圖像進(jìn)行分析和處理,從而實(shí)現(xiàn)自動(dòng)識(shí)別和辨認(rèn)人臉的技術(shù),隨著計(jì)算機(jī)視覺和模式識(shí)別領(lǐng)域的快速發(fā)展,人臉識(shí)別技術(shù)取得了長(zhǎng)足的進(jìn)步,本文給大家介紹了基于Python實(shí)現(xiàn)人臉識(shí)別相似度對(duì)比功能,感興趣的朋友可以參考下2024-01-01
Python3 tkinter 實(shí)現(xiàn)文件讀取及保存功能
tkinter是一個(gè)跨平臺(tái)的GUI庫(kù),開發(fā)的程序可以在win,linux或者mac下運(yùn)行,tkinter是python自帶的GUI庫(kù),是對(duì)圖形庫(kù)TK的封裝。本文通過實(shí)例代碼給大家介紹Python3 tkinter 實(shí)現(xiàn)文件讀取及保存功能,感興趣的朋友跟隨小編一起看看吧2019-09-09

