我正在尝试向 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'
,不保留 { } 格式。
有任何想法吗?