Python Trello API-400:“;分析正文时出错“;发布多部分文件附件时
我正在尝试使用Python Trello API-400:“;分析正文时出错“;发布多部分文件附件时,python,python-requests,trello,Python,Python Requests,Trello,我正在尝试使用python请求将PDF作为附件上传到Trello卡。我无法在下面的函数中请求返回除400:Error parsing body之外的任何内容,尽管进行了重大调整(详情如下) 我应该注意的是,我能够创建卡片并向它们添加URL附件(这两个都不需要上传文件),而没有任何问题 以下是处理文件POST的代码: def post_pdf(session, design, card_id): attachment = { "name": design["camp
python请求
将PDF作为附件上传到Trello卡。我无法在下面的函数中请求返回除400:Error parsing body
之外的任何内容,尽管进行了重大调整(详情如下)
我应该注意的是,我能够创建卡片并向它们添加URL附件(这两个都不需要上传文件),而没有任何问题
以下是处理文件POST的代码:
def post_pdf(session, design, card_id):
attachment = {
"name": design["campaign_title"] + " - Combined PDF",
"mimeType": "application/pdf"
}
pdf_post = session.post(
url = "https://api.trello.com/1/cards/" + card_id + "/attachments",
files = {"file": open("combined_pdf.pdf", "rb")},
data = attachment
)
身份验证密钥和令牌是在创建会话时设置的会话参数,因此不在此处添加它们
另外,在实际代码中,POST
由包装器函数处理,该函数为请求添加了一些样板错误检查和速率限制,以及请求失败时更详细的错误转储,但我已经确认(在上面的示例中)相同的错误在没有包装器的情况下仍然存在
我尝试过的调整
- 将
替换为data=attachment
json=attachment
- 将
替换为data=attachment
params=attachment
- 完全省略
,并且附件
在没有相关数据的情况下删除文件发布
- 将
添加到请求参数(这似乎对上传不重要,但我认为尝试一下也无妨)stream=True
- 将文件编码为
(这种编码在其他地方是必需的;我正在抓救命稻草)base64
- 将文件编码为
,并结合上述对base64
/数据的调整
/json
参数
注意:PDF文件可能是问题的根源-它是通过将多个图像转换为PDF格式,然后将它们与
pdfunite
连接而生成的,因此我很可能在创建过程中出错,导致Trello拒绝该文件。似乎可以证实这一点的是,谷歌搜索Trello“错误解析体”
会返回两个点击,其中只有一个涉及Trello,而且两个都没有用。这让我觉得这是一条特别奇怪/罕见的错误消息,这对我来说意味着我在编码文件时犯了某种严重的错误
但是,PDF文件在我(和我的同事)的系统上正确打开,没有任何错误消息、工件或其他奇怪行为。更重要的是,使用其他“已知良好”PDF尝试此操作也会失败,错误代码相同。由于该文件的内容属于“公司财产/信息”的范围,我希望避免发布它(和/或原始请求主体),但如果一致认为是它造成了问题,我会这样做 我找到了解决方案:
内容类型
标头设置不正确,因为在发送上载请求时,会话范围的设置(session.headers.update({“Content Type”:“application/json”})
覆盖了多部分/表单数据
标头。这导致特雷罗拒绝了尸体。我通过删除会话级标题解决了这个问题,该标题允许请求
修改每个请求的内容类型