Box API に POST を送信しようとしていますが、Python 経由での送信に問題があります。curl を使用すると完全に機能します。
curl https://view-api.box.com/1/sessions \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"document_id": "THE_DOCUMENT_ID", "duration": 60}' \
-X POST
しかし、私のpythonコードではHTTP Error 400: BAD REQUEST
headers = {'Authorization' : 'Token '+view_api_key, 'Content-Type' : 'application/json'}
session_data = {"document_id" : doc_id, "duration": 60}
session_data = urllib.urlencode(session_data)
session_request = urllib2.Request("https://view-api.box.com/1/sessions", session_data, headers)
session_response = urllib2.urlopen(session_request)
問題は私の中にありますsession_data
。標準の application/x-www-form-urlencoded 形式 ( http://docs.python.org/2/library/urllib2.html ) のバッファーである必要があるため、 を実行しurlencode
ますが、出力は です'duration=60&document_id=MY_API_KEY'
。 { } 形式を保持しません。
何か案は?