使用Python通过带认证的REST API获取PDF:无需二次请求的方法咨询
解决方案
首先需要明确:你调用的API第一次响应仅返回PDF的下载链接,PDF文件内容并未包含在这次响应中,因此无法绕过二次请求直接获取PDF。但可以通过代码自动化完成解析链接、下载保存的全流程,无需手动操作。
以下是优化后的实现代码:
import requests # 创建会话,复用认证状态,避免重复验证 with requests.Session() as session: # 设置认证信息 session.auth = ("USERNAME1234", "PASSWORD1234") # 发起第一次请求获取PDF链接 resp = session.get("https://API.EXAMPLE.com/sub/sub/file") resp.raise_for_status() # 自动处理请求错误 # 解析响应JSON,提取PDF下载链接 data = resp.json() pdf_url = data[0]["Attachments"][0]["Url"] # 发起第二次请求下载PDF并保存 pdf_resp = session.get(pdf_url) pdf_resp.raise_for_status() # 保存PDF文件,文件名可根据需求修改 with open("downloaded_file.pdf", "wb") as f: f.write(pdf_resp.content)
代码说明:
- 使用
requests.Session()创建会话,自动保存认证后的Cookie,第二次请求无需重复传入auth参数,更高效且符合API认证逻辑。 - 加入
resp.raise_for_status(),如果请求失败(比如401、404)会直接抛出异常,方便排查问题。 - 自动解析JSON提取PDF链接,无需手动复制或定位。
- 直接将PDF响应内容写入本地文件,完成自动化下载。
内容的提问来源于stack exchange,提问作者Cairoknox
相关产品推荐
相关产品推荐

