我正在尝试使用 dribbble.com API 通过 Python 上传镜头。这是他们的文档:https://developer.dribbble.com/v2/shots/#create-a-shot,所附图像是相关部分。 image 参数应该是一种文件类型,但我不确定如何在 python 请求中执行此操作。
到目前为止,我已尝试执行以下操作,并附加了我的代码。我已经尝试过端点 users/shots 和 /shots:
1 给出了最明显的错误,414,但我仍然不确定为什么。无论我是否包含用户代理,2 都会给出错误 403。当前代码有 1,其中 2 被注释掉。使用端点用户/镜头,我在 1 中收到错误 414,在 2 中收到错误 404。
#data = open(myPath, "rb")
#headers = {"content-type" : "image/jpg", "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"}
params = {
"image" : open(myPath, "rb"),
"title" : myCaption
}
r = requests.post("https://api.dribbble.com/v2/shots?access_token="+DRIBBBLE_ACCESSTOKEN, params=params) #, data=data, headers=headers)
print(r)
对于请求,您可以使用
files
参数将文件作为表单的一部分上传:
form_data = {
"title": myCaption,
}
files = {
"image": open(myPath, "rb"),
}
r = requests.post("https://api.dribbble.com/v2/shots?access_token="+DRIBBBLE_ACCESSTOKEN, data=form_data, files=files)
params
参数用于作为 URL 一部分的参数。即使对于 POST 请求也是如此,params
会附加到 URL。这就是为什么你得到的 414 URI 太长。