You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python requests上传octet-stream视频至LinkedIn如何获取响应etag

问题根因

你之前尝试的两种提取逻辑都在解析响应体,但从curl返回的结果可以明确看到该接口响应头标注了Content-Length: 0,也就是响应体为空。你需要的etag是HTTP响应头字段,根本不存在于响应体中,因此解析JSON的操作完全是找错了位置。

正确提取方法

requests库会自动将所有响应头解析为大小写不敏感的字典结构,存放在响应对象的headers属性里,直接从中取值即可。
另外注意Python原生的open()函数不识别~代表的用户家目录缩写,需要手动展开路径避免文件找不到的问题,大文件上传时也不建议一次性把整个文件读入内存,直接传文件对象即可让requests自动分块传输。

完整修正代码:

import requests
import os

headers = {
    'Content-Type': 'application/octet-stream',
}

params = {
    'sau': 'aHR0cHM6Ly93d3cubGlua2VkaW4tZWkuY29tL2FtYnJ5L2FtYnJ5LXZpZGVvZWkvP3gtbGktYW1icnktZXA9QVFHVkdRS0FtS05oM2dBQUFYd19ObG1uZzVYcllXajEzZjIybXh4LW55SGVBclVKcE8y',
}

# 展开家目录路径
file_path = os.path.expanduser('~/Downloads/sample.mp4')
with open(file_path, 'rb') as f:
    response = requests.put(
        'https://www.linkedin.com/dms-uploads/C5505AQH-oV1qvnFtKA/uploadedVideo',
        params=params,
        headers=headers,
        data=f  # 直接传文件对象,避免大文件占满内存
    )

# 从响应头提取etag,键名大小写不敏感
etag_value = response.headers.get('etag')
print(etag_value)
注意事项
  • 部分服务返回的etag会被双引号包裹,或者带弱校验前缀W/,如果后续步骤校验etag格式失败,按需做字符串裁剪即可。
  • 只要是HTTP响应头里的字段,不管是etag、x-request-id还是自定义头,都可以通过response.headers获取,不需要解析响应体。

内容的提问来源于stack exchange,提问作者NewStarDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:57:29