2017-08-10 20 views
1

Crowd APIを使用してユーザーを作成するために、json形式のデータを含むPOSTリクエストを送信しようとしています。python 2.4でurllib2経由で投稿データを送信するには?

payload = json.dumps({"name": "sampleuser", "password": {"value": "secret"}, "active": true, "first-name": "Sample", "last-name": "User","display-name": "Sample User", "email": "[email protected]"}) 
:私はこれは多分にそう置き換えペイロードエンコーディングの問題かもしれないと思った

Bad Request 
Error code returned is 400 

:私は次の出力を得る

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 

:ここ

は、コードスニペットです

返品:

NameError: name 'true' is not defined 

したがって、"active": trueは受け入れ可能な形式ではありません。

"active":"true"のような二重引用符を追加すると、が得られます。タイプエラー; TypeError: not a valid non-string sequence or mapping object

更新

だから、型エラーが実際にTrueactive属性値を設定することで解決したが、それは400エラーが原因the user already existsとして読み込まinvalid user data, for example missing password or the user already existsに戻したが判明 - 私はそれは奇妙なことを見つけるのエラー無効な入力と既存のユーザーが同じエラーコードを共有するためです。

+3

「True」に変更するとどうなりますか? –

+1

本当に好奇心が強い - 古いPythonバージョンのユースケースは何ですか? – JoshuaRLi

+0

あなたのサンプルコードは、http:// –

答えて

0
このラインで

payload = '{"name": "sampleuser", "password": {"value": "secret"}, "active": true, "first-name": "Sample", "last-name": "User","display-name": "Sample User", "email": "[email protected]"}'

変更..., "active": true, ...

..., "active": True, ...にPythonの True/ False大文字と小文字が区別されます。

+0

良い点ですが、同じエラーが発生しています。私はCURLでこれを試してみることができますか? – kaizenCoder

関連する問題