1. 程式人生 > >Python中request傳送post請求傳遞json引數的問題

Python中request傳送post請求傳遞json引數的問題

昨天遇到了一個奇怪的問題,在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'})
就可以正常在服務端得到傳過來的引數了。