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

Python调用REST API:获取认证token后作为变量调用POST请求鉴权失败

问题原因及解决方法

核心错误原因

你在构造authenticationtoken变量时,主动在token首尾拼接了多余的单引号:

authenticationtoken = "'" + 处理后的token内容 + "'"

这会导致变量实际存储的内容是'你的实际token值'(字符串本身携带单引号),而你手动复制打印结果赋值时:

a = 'myauthenticationtokenabc/123'

这里的单引号是Python的字符串边界标识,变量a里实际存储的内容是没有单引号的myauthenticationtokenabc/123,和你自动生成的带单引号的变量内容完全不一样,接口校验ticket的时候自然会报错。

修复方案

  • 去掉拼接的单引号,同时不要手动处理JSON返回值,用requests自带的JSON解析方法更稳妥,避免后续接口返回格式变化导致解析错误,同时修正你第一个请求的示例代码笔误:
import requests
# 授权接口请求
auth_url = '你的授权接口地址'
# payload建议用字典格式更规范,不需要手动拼接字符串
payload = {'username':'你的账号', 'password':'你的密码'}
auth_headers = {'你的请求头key':'对应的value'}
response = requests.post(auth_url, headers=auth_headers, data=payload)
# 直接解析JSON获取ticket,不需要手动做替换操作,response.json()会自动处理转义字符
authenticationtoken = response.json()['ticket']
# 如果返回的ticket确实存在多余反斜杠,再额外加一步替换:authenticationtoken = authenticationtoken.replace('\\', '')
  • 第二个上传请求直接使用上面解析好的变量即可,同时修正代码里的笔误:
files = {'file': open(r"你的文件路径", "rb")}
data = { 'type':你的类型参数值, 'parent_id': 你的父ID参数值, 'name': 'DummyFile' }
upload_url = "你的上传接口地址"
upload_headers = {'ticket': authenticationtoken }
response = requests.post(upload_url, headers=upload_headers, files=files, data=data)
print(response.text) # 原代码里的cs是未定义变量,改为response

额外优化建议

  • 打开文件上传完成后建议主动关闭文件,或者用with open(文件路径, 'rb') as f的上下文管理器写法,避免资源占用。
  • 可以给授权请求加异常捕获,避免接口调用失败时后续解析JSON报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:03