欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用requests.post方法傳遞form-data類型的Excel數(shù)據(jù)的示例代碼

 更新時間:2024年01月28日 11:05:23   作者:weixin_43962547  
這篇文章介紹了python使用requests.post方法傳遞form-data類型的Excel數(shù)據(jù)的示例代碼,某些post接口,需要發(fā)送multipart/form-data類型的數(shù)據(jù),如何使用python requests來模擬這種類型的請求發(fā)送呢?補充講解了python使用requests post請求發(fā)送form-data類型數(shù)據(jù),一起看看吧

python使用requests.post方法傳遞form-data類型的Excel數(shù)據(jù)

import datetime
import json
import random
import string
import requests
from requests_toolbelt import MultipartEncoder
# 在企業(yè)微信群里發(fā)消息
def log(day):
	url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx'
	headers = {
		"Content-Type":"application/json"
	}
	data = {
		"msgtype":"text",
		"text":{
			"content":"xxx"
		}
	}
	response = requests.post(url=url,headers=headers,data=json.dumps(data))
	print(response.status_code)
	print(response.text)
# 測試環(huán)境
# url = "https://xxx"
# 生產(chǎn)環(huán)境
url = "https://xxx"
# 定義字符集
chars = string.ascii_lowercase+string.digits+string.ascii_uppercase
# 生成長度為32的隨機字符串
random_str = ''.join(random.sample(chars, 32))
print(random_str)
# 設(shè)置日期
day = ((datetime.datetime.now()-datetime.timedelta(days=1)).strftime("%Y-%m-%d"))
# 配置數(shù)據(jù)
data = MultipartEncoder({
	'requestId':random_str,
	'docType':'invoice',
	# 'application/octet-stream'這個可以通過apifox等軟件post一次后看請求內(nèi)容獲取
	'file': ('xxx.csv', open('xxx.csv', 'rb'), 'application/octet-stream'),
	# 'file': ('xxx.csv'), open(xxx.csv', 'rb'), 'application/octet-stream'),
})
# 配置請求頭
headers = {
   # 'Authorization': 'Bearer xxx',    # 測試環(huán)境
   'Authorization': 'Bearer xxx',  # 生產(chǎn)環(huán)境
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Accept': '*/*',
   # 'Host': 'xxx',   # 測試環(huán)境
   'Host': 'xxx',     # 生產(chǎn)環(huán)境
   'Connection': 'keep-alive',
   'Content-Type': data.content_type
}
print(data.content_type)
# 返回結(jié)果
response = requests.post(url, headers=headers, data=data)
print(response.text)
if json.loads(response.text)['code'] == "200":
	print("ok")
	log(day)

補充:

python 使用requests post請求發(fā)送form-data類型數(shù)據(jù)

某些post接口,需要發(fā)送multipart/form-data類型的數(shù)據(jù),如何使用python requests來模擬這種類型的請求發(fā)送呢?

根據(jù)http/1.1rfc 2616的協(xié)議規(guī)定,我們的請求方式有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等。

http協(xié)議規(guī)定以ASCII碼傳輸,建立在tcp,ip協(xié)議之上的引用規(guī)范。規(guī)范內(nèi)容把http請求分成3個部分:狀態(tài)行,請求頭,請求體。所有的方法,實現(xiàn)都是圍繞如何使用和組織這三部分來完成了,萬變不離其宗。

post請求有兩種編碼格式:application/x-www-form-urlencoded 和multipart/form-data

  • application/x-www-form-urlencoded 常用在前端表單提交時,參數(shù)格式為:key=value&key=value。
  • 如果參數(shù)中有特殊字符,則要進行url編碼,編碼格式就是application/x-www-form-urlencoded(規(guī)則:將鍵值對的參數(shù)用&連接起來;有空格轉(zhuǎn)換為+加號;有特殊符號轉(zhuǎn)換為ASCII HEX值)。
        如:參數(shù)值中有&,需要轉(zhuǎn)換為ASCII HEX值%26,對應(yīng)ASCII中38位置的&。
  • application/x-www-form-urlencoded是瀏覽器默認的編碼格式。對于Get請求,是將參數(shù)轉(zhuǎn)換為?key=value&key=value格式,連接到url后。

multipart/form-data

multipart/form-data格式不僅可以傳輸參數(shù),還可以傳輸文件。也是在post基礎(chǔ)上演變而來的,具體如下:

  • multipart/form-data的基礎(chǔ)方式是post,即基于post請求來實現(xiàn)的。
  • multipart/form-data與普通post方法的不同之處在于請求頭和請求體。
  • multipart/form-data的請求頭必須包含一個特殊的頭信息:Content-Type,其值也必須為multipart/form-data;同時還需要規(guī)定一個內(nèi)容分割用于分割請求體中不同參數(shù)的內(nèi)容。
    具體的頭信息如下:Content-Type: multipart/form-data; boundary=${bound}
  • multipart/form-data的請求體也是一個字符串,和普通post請求的不同之處在于它的構(gòu)造方式。普通post請求是簡單的鍵值對連接,而multipart/form-data則是添加了分隔符、參數(shù)描述信息等內(nèi)容的構(gòu)造體。

關(guān)于boundary:

  • 上面說到普通post請求使用 & 來分隔參數(shù),那服務(wù)器使用multipart/form-data格式接收POST請求時,使用何種方式來分割參數(shù)的呢?答案是boundary。
  • 由上圖可以發(fā)現(xiàn),HTTP的Body中使用兩個短橫線”–”加上boundary字符串作為不同參數(shù)的分割,而且不管是值參數(shù)(Value)還是文件參數(shù)(File)在Boundary內(nèi)部都有自己的描述信息,并不是URL參數(shù)的簡單移動。

并且在結(jié)束的時候,不僅前綴要加雙短橫線,后綴也要加,代表結(jié)束。

boundary快問快答:

Q:boundary的值是用戶可以自由定義的嗎?
A:是的,但為了避免和正常文本重復了,盡量要使用復雜一點的內(nèi)容。

Q:boundary的作用?
A:分割參數(shù),類似于普通post請求中的 &

使用python發(fā)送multipart/from-data類型數(shù)據(jù)

有兩種方式:

  • 手動組建form-data并修改headers
  • 通過files參數(shù)傳遞form-data,推薦此種方式,這里只說這種方式

在官方網(wǎng)站上,requests模擬一個表單數(shù)據(jù)的格式如下:

files = {{name}: (<filename>, <file object>,<content type>, <per-part headers>)}

這一行模擬出來的post數(shù)據(jù)為:

Content-Disposition: form-data; name={name};filename=<filename>
Content-Type: <content type>
<file object>
--boundary

注:如果filename 和 content-Type不寫,那么響應(yīng)模擬post的數(shù)據(jù)就不會有二者。

通過上述說明,我們可以構(gòu)造出files后直接post請求發(fā)送即可:

files = {
    'schoolId': (None, -1),
    'schoolName': (None, ""),
    "reward": (None, 5),
    "publishText": (None, "測試測試"),
    "tags": (None, 1),
    'image': ('image.jpg', open('%s/resource/upload_images/image.jpg' % PATH_DIR, 'rb'), 'application/octet-stream')
}
response = requests.post(url, files=files)

豬豬俠要努力呀!

到此這篇關(guān)于python使用requests.post方法傳遞form-data類型的Excel數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python使用requests.post方法傳遞Excel數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python設(shè)置代理和添加鏡像源的方法

    python設(shè)置代理和添加鏡像源的方法

    這篇文章主要介紹了python設(shè)置代理和添加鏡像源介紹,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python迭代器、生成器、協(xié)程使用方式

    Python迭代器、生成器、協(xié)程使用方式

    這篇文章主要介紹了Python迭代器、生成器、協(xié)程使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python高效過濾出文件夾下指定文件名結(jié)尾的文件實例

    python高效過濾出文件夾下指定文件名結(jié)尾的文件實例

    今天小編就為大家分享一篇python高效過濾出文件夾下指定文件名結(jié)尾的文件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python實現(xiàn)自定義函數(shù)的5種常見形式分析

    Python實現(xiàn)自定義函數(shù)的5種常見形式分析

    這篇文章主要介紹了Python實現(xiàn)自定義函數(shù)的5種常見形式,結(jié)合實例形式較為詳細的分析了Python自定義函數(shù)相關(guān)的參數(shù)、默認值、隱函數(shù)等相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • python3如何將docx轉(zhuǎn)換成pdf文件

    python3如何將docx轉(zhuǎn)換成pdf文件

    這篇文章主要為大家詳細介紹了python3如何將docx轉(zhuǎn)換成pdf文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python的dataframe轉(zhuǎn)換為多維矩陣的方法

    python的dataframe轉(zhuǎn)換為多維矩陣的方法

    下面小編就為大家分享一篇python的dataframe轉(zhuǎn)換為多維矩陣的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 如何查看Python安裝了哪些包

    如何查看Python安裝了哪些包

    這篇文章主要給大家介紹了關(guān)于如何查看Python安裝了哪些包的相關(guān)資料, Conda是另一種廣泛使用的Python包管理工具,它用于安裝、管理和升級軟件包和其依賴項,需要的朋友可以參考下
    2023-07-07
  • python3爬蟲中多線程進行解鎖操作實例

    python3爬蟲中多線程進行解鎖操作實例

    在本篇文章里小編給大家整理了關(guān)于python3爬蟲中多線程進行解鎖操作實例內(nèi)容,需要的朋友們可以參考下。
    2020-11-11
  • Python?ftfy?包的使用案例解析

    Python?ftfy?包的使用案例解析

    Unicode是一種字符編碼標準,用于表示文本中的字符,通過安裝 ftfy 軟件包,可以在 Python 中使用它提供的函數(shù)和工具來處理和修復文本中的 Unicode 問題,從而確保文本在各種應(yīng)用中的正確性和可靠性,這篇文章主要介紹了Python ftfy包的理解和使用,需要的朋友可以參考下
    2023-05-05
  • Python中基礎(chǔ)的socket編程實戰(zhàn)攻略

    Python中基礎(chǔ)的socket編程實戰(zhàn)攻略

    Python擁有內(nèi)置的socket模塊,可以用簡潔明了的代碼來進行socket通信操作,這里我們就為大家整理了一份Python中基礎(chǔ)的socket編程實戰(zhàn)攻略,需要的朋友可以參考下.
    2016-06-06

最新評論