我正在嘗試使用json格式提交POST請求數據以創建使用Crowd API的用戶。如何通過python 2.4中的urllib2提交發布數據?
這裏是代碼片段:
url = 'http://crowdserver/crowd/rest/usermanagement/1/user'
payload = '{"name": "sampleuser", "password": {"value": "secret"}, "active": true, "first-name": "Sample", "last-name": "User","display-name": "Sample User", "email": "[email protected]"}'
req = urllib2.Request(url, payload)
req.add_header('Content-type','application/json')
req.add_header("Accept", "application/json")
res = urllib2.urlopen(req)
output = resp.read()
print output
print resp.code
我得到以下輸出:
Bad Request
Error code returned is 400
我想這可能也許是一個編碼問題,所以替代的有效載荷有:
payload = json.dumps({"name": "sampleuser", "password": {"value": "secret"}, "active": true, "first-name": "Sample", "last-name": "User","display-name": "Sample User", "email": "[email protected]"})
其中收益:
NameError: name 'true' is not defined
所以它看起來像"active": true
是不是在一個可接受的格式。
如果我添加雙引號,如"active":"true"
我得到一個TypeError; TypeError: not a valid non-string sequence or mapping object
更新
所以類型錯誤確實是由active
屬性值設置爲True
解決,但事實證明了400
錯誤是由於invalid user data, for example missing password or the user already exists
讀作the user already exists
回來了 - 我覺得很奇怪的錯誤對於無效輸入和現有用戶共享相同的錯誤代碼。
如果將其更改爲「True」,該怎麼辦? –
真的好奇 - 這樣一箇舊的Python版本的用例是什麼? – JoshuaRLi
您的示例代碼通過http –