python實現以application/json格式為請求體的http post請求


  • 接口傳遞數據格式類型為json格式,如下圖抓包查看

 

 

  • Python實現腳本請求接口並以中文打印接口返回的數據
 1 import json
 2 import requests
 3 
 4 url = "https://....//Api/User/...."
 5 values = {'token':'4CAC044621D1EE5DC8D573BA019EE4FD2CD87859','lang':'jp'}
 6 # 打印values的數據類型,輸出<class 'dict'>
 7 print(type(values))
 8 print(values)
 9 # json.dump將python對象編碼成json字符串
10 values_json = json.dumps(values)
11 # 打印編碼成json字符串的values_json的數據類型,輸出<class 'str'>
12 print(type(values_json))
13 print(values_json)
14 # requests庫提交數據進行post請求
15 req = requests.post(url, data=values_json)
16 # 打印Unicode編碼格式的json數據
17 print(req.text)
18 # 使用json.dumps()時需要對象相應的類型是json可序列化的
19 change = req.json()
20 # json.dumps序列化時對中文默認使用ASCII編碼,如果無任何配置則打印的均為ascii字符,輸出中文需要指定ensure_ascii=False
21 new_req = json.dumps(change, ensure_ascii=False)
22 # 打印接口返回的數據,且以中文編碼
23 print(new_req)

 

  • 執行腳本,接口返回數據

 

  • 使用到的函數

json.dump()                      將python對象編碼成json字符串

requests.post(url, data)    requests庫提交數據進行post請求

req.json()                          在使用json.dumps前將對象req進行json可序列化

json.dumps(change, ensure_ascii=False)  json.dumps序列化數據並輸入中文編碼數據

 

  • 腳本執行過程報錯記錄,requests爬蟲時開啟代理會報以下錯誤

          requests.exceptions.SSLError: HTTPSConnectionPool(host='api.****.cn', port=443):Max retries exceeded with url: //Api/User/getStaffList (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))


免責聲明!

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



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