最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間: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來(lái)模擬這種類型的請(qǐng)求發(fā)送呢?補(bǔ)充講解了python使用requests post請(qǐng)求發(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)
# 測(cè)試環(huán)境
# url = "https://xxx"
# 生產(chǎn)環(huán)境
url = "https://xxx"
# 定義字符集
chars = string.ascii_lowercase+string.digits+string.ascii_uppercase
# 生成長(zhǎng)度為32的隨機(jī)字符串
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'這個(gè)可以通過(guò)apifox等軟件post一次后看請(qǐng)求內(nèi)容獲取
	'file': ('xxx.csv', open('xxx.csv', 'rb'), 'application/octet-stream'),
	# 'file': ('xxx.csv'), open(xxx.csv', 'rb'), 'application/octet-stream'),
})
# 配置請(qǐng)求頭
headers = {
   # 'Authorization': 'Bearer xxx',    # 測(cè)試環(huán)境
   'Authorization': 'Bearer xxx',  # 生產(chǎn)環(huán)境
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Accept': '*/*',
   # 'Host': 'xxx',   # 測(cè)試環(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)

補(bǔ)充:

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

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

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

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

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

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

multipart/form-data

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

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

關(guān)于boundary:

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

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

boundary快問(wèn)快答:

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

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

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

有兩種方式:

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

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

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

這一行模擬出來(lái)的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ù)就不會(huì)有二者。

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

files = {
    'schoolId': (None, -1),
    'schoolName': (None, ""),
    "reward": (None, 5),
    "publishText": (None, "測(cè)試測(cè)試"),
    "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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 輸出詳細(xì)的異常信息(traceback)方式

    Python 輸出詳細(xì)的異常信息(traceback)方式

    這篇文章主要介紹了Python 輸出詳細(xì)的異常信息(traceback)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • 使用Python分割并高效處理PDF大文件詳解

    使用Python分割并高效處理PDF大文件詳解

    在處理大型PDF文件時(shí),將它們分解成更小、更易于管理的塊通常是有益的,本文將為大家介紹一下如何使用Python和為Unstructured.io庫(kù)實(shí)現(xiàn)分割PDF吧
    2025-03-03
  • 一文帶你了解Python中的枚舉(enum)

    一文帶你了解Python中的枚舉(enum)

    這篇文章一文帶你了解Python中的枚舉(enum),在Python中,枚舉和我們?cè)趯?duì)象中定義的類變量時(shí)一樣的,每一個(gè)類變量就是一個(gè)枚舉項(xiàng),需要的朋友可以參考下
    2023-04-04
  • Python中的哈希算法模塊hashlib詳解

    Python中的哈希算法模塊hashlib詳解

    這篇文章主要介紹了Python中的哈希算法模塊hashlib詳解,hashlib模塊實(shí)現(xiàn)了多種哈希算法,包括MD5以及SHA家族的算法,通過(guò)algorithms_guaranteed可以查看hashlib中封裝的所有算法,需要的朋友可以參考下
    2023-08-08
  • spark?dataframe全局排序id與分組后保留最大值行

    spark?dataframe全局排序id與分組后保留最大值行

    這篇文章主要為大家介紹了spark?dataframe全局排序id與分組后保留最大值行實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Python中線程鎖的使用介紹

    Python中線程鎖的使用介紹

    大家好,本篇文章主要講的是Python中線程鎖的使用介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python?如何將?matplotlib?圖表集成進(jìn)到PDF?中

    Python?如何將?matplotlib?圖表集成進(jìn)到PDF?中

    這篇文章主要介紹了Python?如何將?matplotlib?圖表集成進(jìn)到PDF?中,文章介紹內(nèi)容詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-03-03
  • 解決Django transaction進(jìn)行事務(wù)管理踩過(guò)的坑

    解決Django transaction進(jìn)行事務(wù)管理踩過(guò)的坑

    這篇文章主要介紹了解決Django transaction進(jìn)行事務(wù)管理踩過(guò)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • python郵件發(fā)送smtplib使用詳解

    python郵件發(fā)送smtplib使用詳解

    這篇文章主要為大家詳細(xì)介紹了python郵件發(fā)送smtplib的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python常見(jiàn)文件操作的示例詳解

    Python常見(jiàn)文件操作的示例詳解

    文件操作是我們開(kāi)發(fā)中必不可少的一項(xiàng)需求。本文主要給大家介紹了關(guān)于Python常見(jiàn)的一些文件操作,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評(píng)論

元阳县| 济源市| 崇左市| 福泉市| 尼玛县| 华容县| 英超| 师宗县| 砀山县| 景洪市| 东宁县| 托克逊县| 福清市| 杭锦后旗| 区。| 新余市| 仲巴县| 鹤岗市| 靖安县| 万山特区| 普兰县| 阿瓦提县| 呈贡县| 禹州市| 巩义市| 东丰县| 丹凤县| 剑川县| 秦安县| 广宁县| 江阴市| 乐至县| 平远县| 五大连池市| 扶沟县| 香港 | 泰宁县| 德化县| 横山县| 红安县| 法库县|