簡體   English   中英

如何在python 2.4中通過urllib2提交帖子數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM