使用Python调用StirlingPDF API合并PDF时遭遇Error 415错误
解决StirlingPDF API合并PDF时的415错误
错误原因
415「不支持的媒体类型」错误,提示Content-Type 'application/json' is not supported.,是因为你当前用JSON格式提交请求体,但StirlingPDF的合并PDF接口要求使用multipart/form-data格式上传文件,而非JSON。
修正后的代码
import requests filepaths = [r"C:\Users\Public\Documents\data1.pdf", r"C:\Users\Public\Documents\data2.pdf"] # 构造files参数:多个文件以列表形式传入,每个元素是(参数名, (文件名, 文件二进制流, 内容类型)) files = [] for idx, filepath in enumerate(filepaths): with open(filepath, 'rb') as file: # 文件名可以自定义,保留原文件名也可 files.append(('fileInput', (f'data{idx+1}.pdf', file.read(), 'application/pdf'))) url = "https://stirlingpdf.io/api/v1/general/merge-pdfs" # 非文件参数通过data传递 req_data = {"sortType": "orderProvided", "removeCertSign": False} # 发送POST请求,同时传递files和data response = requests.post(url, files=files, data=req_data) # 处理响应结果 if response.status_code == 200: # 保存合并后的PDF文件 with open("merged_result.pdf", 'wb') as output_file: output_file.write(response.content) print("PDF合并成功") else: print(f"请求失败,状态码:{response.status_code},响应信息:{response.text}")
关键说明
- 合并PDF接口仅接受
multipart/form-data格式的请求,必须使用requests.post的files参数传递文件,不能将二进制数据封装进JSON。 fileInput是接口定义的文件参数名,多个文件需以列表形式传入该参数下。- 排序规则、移除证书签名这类非文件参数,直接通过
data参数传递即可。
内容的提问来源于stack exchange,提问作者calcPit




