[英]How to submit post data via urllib2 in python 2.4?
我正在嘗試使用json格式的數據提交POST請求,以使用Crowd API創建用戶。
這是代碼片段:
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": "sample@user.cool"}'
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": "sample@user.cool"})
哪個返回:
NameError: name 'true' is not defined
因此它看起來像"active": true
的格式不可接受。
如果添加雙引號,例如"active":"true"
則會收到TypeError ; TypeError: not a valid non-string sequence or mapping object
更新資料
因此,通過將active
屬性值設置為True
確實解決了類型錯誤,但事實證明,由於invalid user data, for example missing password or the user already exists
而已讀the user already exists
invalid user data, for example missing password or the user already exists
返回了400
錯誤-我覺得很奇怪輸入無效的錯誤和現有用戶共享相同的錯誤代碼。
在這一行:
payload = '{"name": "sampleuser", "password": {"value": "secret"}, "active": true, "first-name": "Sample", "last-name": "User","display-name": "Sample User", "email": "sample@user.cool"}'
將..., "active": true, ...
更改為..., "active": True, ...
Python的True
/ False
區分大小寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.