我正在開發一個API包裝器。我試圖建立該規範中有如下要求:Python請求模塊:urlencoding json數據
curl -H "Content-type:application/json" -X POST -d data='{"name":"Partner13", "email":"[email protected]"}' http://localhost:5000/
這個請求產生從一個小的測試服務器我安裝了以下回應看exatly什麼頭/ PARAMS等作爲發送。這個小腳本生成:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data={"name":"Partner13", "email":"[email protected]"}
所以這上面的是我希望我的Python腳本來創建,當它擊中的小測試腳本的結果。
我正在使用python requests模塊,這是我使用過的最美麗的HTTP lib。所以這裏是我的Python代碼:
uri = "http://localhost:5000/"
headers = {'content-type': 'application/json' }
params = {}
data = {"name":"Partner13", "email":"[email protected]"}
params["data"] = json.dumps(data)
r = requests.post(uri, data=params, headers=headers)
這麼簡單的東西。設置標題,併爲POST參數創建一個字典。該字典有一個名爲「data」的條目,它是我想發送給服務器的數據的JSON字符串。然後我打電話給這個帖子。但是,結果我的小測試腳本還給是:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data=%7B%22name%22%3A+%22Partner13%22%2C+%22email%22%3A+%22example%40example.com%22%7D
所以基本上我想要的數據參數下的發送JSON數據已經urlendcoded。
有誰知道如何解決這個問題?我查看了請求文檔,似乎無法找到一種不自動urlencode發送數據的方法。
非常感謝, 凱文
curl示例中的數據無效json。它是表單編碼和json的混合體。 –