python request post 列表的方法詳解
request post 列表的方法
今天拿著已經寫好的服務接口, 嘗試傳送一些列表, 發現傳送的結果跟實際傳送的數據並不一致,然後又開始瞭漫漫查資料的旅程。
原代碼
原代碼用來處理字典還是比較很成功的。
post: url = 'http://127.0.0.1:5000/test' data = {"text": '今天很開心', "lang": zh} ret = requests.post(url,data=data) get: txt = request.form['text'] lang = request.form['lang'] print(txt, lang) print:
今天很開心 zh
但我想要傳送列表,比如
post: url = 'http://127.0.0.1:5000/test' data = {"text": '今天很開心', "data": [{'Text', 'a'}, {'Text', 'b'}]} ret = requests.post(url,data=data)
類似於這種情況, 以上的方法就會失效, 會丟失部分數據, 具體原因是什麼沒有去深究, 感興趣的小夥伴可以自己嘗試一下。
解決方案
1. 再按照原先那種以字典的方式進行傳輸是不可以的瞭。
2. 我們需要變成字符串的方式進行傳輸。
3. 一下是post, get的核心代碼
post: ret = requests.post(url, data=json.dumps([{'Text': 'hello'}, {'Text': 'world'}])) get: print(request.data) print: b'[{"Text": "hello"}, {"Text": "world"}]'
註意到, 這裡獲取到的數據是字節碼,後續還需要轉換成字符串進行進一步處理。
如下:
text = bytes.decode(byte_data, encoding='utf-8')
request post 數據中有list和dict方法
今天遇到python requests post數據,
可是數據中有一段是這樣的
data = {"data1":"[{"code":"aaa"}]"}
requests.post數據是會提示未知錯誤
#將列表的內容提取出來,用json.dumps轉換一下 list_code = json.dumps([{"code":"aaa"}]) #然後賦值 data = {"data1":list_code} resp = reuqests.post(url,headers=header,data=data)
使用這個方法就可以瞭
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Python requests.post()方法中data和json參數的使用方法
- python爬蟲用request庫處理cookie的實例講解
- python接口自動化使用requests庫發送http請求
- Python爬蟲Requests庫的使用詳情
- Python requests庫參數提交的註意事項總結