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常見用的請求方式

  1. 傳參為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)
  1. 傳參為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)
  1. 傳參帶文件
    post上傳文件,首先需要構造file,格式如下,fp為文件路徑,然后將構造好的file傳給files即可
import requests

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

OK!

~
~
~

不積跬步,無以至千里


免責聲明!

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



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