【发布时间】:2020-06-28 03:41:47
【问题描述】:
我似乎无法将 cURL 转换为 python。来自文档:
curl -i --upload-file ~/Desktop/Myimage.jpg -H 'Authorization: Bearer Redacted' "https://api.linkedin.com/mediaUpload/C5522AQHn46pwH96hxQ/feedshare-uploadedImage/0?ca=vector_feedshare&cn=uploads&m=AQLKRJOn_yNw6wAAAW2T0DWnRStny4dzsNVJjlF3aN4-H3ZR9Div77kKoQ&app=1983914&sync=0&v=beta&ut=1Dnjy796bpjEY1
我尝试使用文件而不是数据无济于事。
下面的当前代码创建了正确的响应 201,但它是空白的(没有 JSON 详细信息以及用于未来 API 调用的图像)。让我在不使用多部分表单(即“files=”)的情况下通过 PUT 请求上传文件需要进行哪些更改
uploadUrl = data["value"]["uploadMechanism"]["com.linkedin.digitalmedia.uploading.MediaUploadHttpRequest"]["uploadUrl"]
filename = "ffadfads.jpeg"
media_url = "https://1000logos.net/wp-content/uploads/2017/03/LinkedIn-Logo.png"
request = requests.get(media_url, stream=True)
if request.status_code == 200:
with open(filename, 'wb') as image:
for chunk in request:
image.write(chunk)
#files = {'fileupload': open(filename)}
files = {"fileupload":(filename,open(filename,"rb"),'application-type')}
image_headers = {
'Accept': 'image/jpeg,image/png,image/gif',
'Authorization': 'Bearer ' + real_token
}
response = requests.request("PUT", uploadUrl, data=open(filename,"rb"), headers=image_headers)
print response
print response.text
print response.json()
【问题讨论】:
-
@bharatk,那是我去的第一个地方,但没有帮助
-
为什么将
Accept标头设置为image/jpeg,image/png,image/gif?如果您期望来自服务器的 JSON,您会认为它应该设置为application/json。当您的浏览器执行请求时,请求的标头(包括 cookie)是什么? -
@GordonAitchJay 我尝试为 Accept 标头调整不同的内容(图像/jpeg 是最新的)。所有的调整都没有奏效。标头很好,我收到 201 响应。领英很奇怪。你以前通过表单上传效果很好,现在这种新方式让我很困惑,因为 cURL 如何转换为 python。
-
您是否尝试过使用 cURL 来了解它是否有效? (我认为它不起作用)我只是在阅读Rich Media Shares - LinkedIn | Microsoft Docs,如果我阅读正确,您首先需要向
https://api.linkedin.com/v2/assets?action=registerUpload发出一个POST 请求,并将Content-Type标头设置为application/json带有 JSON 有效负载。然后,服务器将使用具有uploadUrl键的 JSON 进行响应,然后您可以使用该键的值来实际上传图像。
标签: python curl linkedin linkedin-api