Requests發Post請求data里面嵌套字典


Requests發Post請求data里面嵌套字典
一、Post請求,data里面嵌套字典

Requests發Post請求,data里面嵌套字典的常見形式如下:

info = {
"appid": "123",
"checkin_type": "6",
"role": "1",
"stunum": "15812086122"
}
form_data = {
'Data': '%s' % info,
'MsgType': 'APP_SEND_CARDCHECKIN_BYSTUNUM'
}
result = requests.post(url, data=form_data)

需提別注意的是,一定要用 'Data': '%s' % info格式化輸出這種形式把嵌套的字典傳給Data,如果直接將info當做value賦值給Data,即,'Data': info,請求是不成功的

{'error_code': '505', 'error_msg': 'Data格式不正確參數驗證失敗'}

通常當post傳入data參數時候,請求格式一般為Content-Type: application/x-www-form-urlencoded格式,按照官方的說法數據字典在發出請求時會自動編碼為表單形式,所以是不是因為這個原因,data中嵌套的字典需要處理成字符串才能正常發post,這點暫存疑惑???
二、Post常見用的請求方式

傳參為json格式
通過抓包后,轉換為raw格式,可以看到Content-Type: application/json

import requests
import josn

payload = {
'a': 1
'b': 2
}

方法一,將payload轉為josn格式

payload = josn.jump(payload)
res = requests.post(url, data=payload)

方法二,直接用josn參數傳遞

res = requests.post(url, josn=payload)

傳參為form-data格式
通過抓包后,轉換為raw格式,可以看到Content-Type: application/x-www-form-urlencoded,此時直接把字典payload傳給參數data即可,此處就需要注意的是,如果payload里面嵌套字典,切記要先將其轉為字符串形式,然后再入參

import requests

payload = {
'a': 1
'b': 2
}
res = requests.post(url, data=payload)

傳參帶文件
post上傳文件,首先需要構造file,格式如下,fp為文件路徑,然后將構造好的file傳給files即可

import requests

file = {
'file_name': open(fp, 'rb')
}
res = requests(url, files=file)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM