0

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'。 { } 形式を保持しません。

何か案は?

4

2 に答える 2

2

View API (および Content API) の場合、コード内の本文データをJSONsession_dataとしてエンコードする必要があります。

あなたがする必要があるのは、あなたのコードの最初にjsonモジュールをインポートすることです(つまりimport json

session_data = urllib.urlencode(session_data)

session_data = json.dumps(session_data)

dumps() は、python dict を JSON 文字列に変換します。

(補足として、urllibを使用せず、代わりにRequestsライブラリを使用することを強くお勧めします。)

于 2013-12-05T02:31:28.193 に答える
0

python-boxviewを試すことができます。BoxView 用の小さな Python ライブラリです。

   from boxview import boxview

   api = boxview.BoxView('YOUR_API_KEY')
   ses = api.create_session('DOCUMENT_ID', duration=90)
于 2014-10-31T16:13:25.520 に答える