Python中request傳送post請求傳遞json引數的問題
阿新 • • 發佈:2019-01-29
昨天遇到了一個奇怪的問題,在Python中需要傳遞dict引數,利用json.dumps將dict轉為json格式用post方法發起請求:
params = {"score":{"gt":"80", "lt":"90"}}
request.post(url, json.dumps(params))
但是在服務端接收到的引數日誌為:
Parameters: {"sno"=>"lt"}
之前用Ruby的RestClient的gem包傳遞引數還是正常的:
params = {"score":{"gt":"80", "lt":"90"}} RestClient.post(url, params.to_json, :content_type => :json)
服務端接收到的引數日誌正確,為:
Parameters: {"score"=>{"gt"=>"80", "lt"=>"90"}}
仔細觀察後發現RestClient中第三個引數為header百度之後發現應該在Python的request中新增header引數,指明所傳的params格式為json,如下:
requests.post(url, data=json.dumps(params), headers={'Content-Type': 'application/json'})
就可以正常在服務端得到傳過來的引數了。