'Python发送POST请求/多部分表单'

2024-09-30 20:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在工作的时候做API连接。我已经提出了一些GET和PUT请求,但是现在我在POST上遇到了问题API documantation is here。下面是我测试的代码,但收到400个错误请求:

import requests

files = {'files': ('fv.pdf', open(r"C:\python\API\fv.pdf", 'rb'))}
data = {"order_documents":[{'file_name':"fv.pdf", 'type_code':'CUSTOMER_INVOICE' }]}

header = {
    'Authorization': '###########################',
}
response = requests.post("https://######.com/api/orders/40100476277994-A/documents", headers=header, files = files, data = data)

print(response.status_code)
print(response.url)

有人知道我该怎么处理吗


Tags: apidatagetpdfputresponsecodefiles
1条回答
网友
1楼 · 发布于 2024-09-30 20:22:19

看起来您缺少了order_documents参数,它需要是一个数组,还需要被称为order\u文档

尝试将data变量更改为: 你知道吗

data = {"order_documents": [ {'file_name':"fv.pdf", 'type_code':'CUSTOMER_INVOICE' } ] }

API期望files作为参数名,而字典将file发送到服务器。给session.post的参数名files仅用于requests库,而不是发送到服务器的实际参数。 API还需要一个数组中有多个文件,因此需要更改files对象。 你知道吗

files = [
    ('files', ('fv.pdf', open(r"C:\python\API\fv.pdf", 'rb')),
]

另外,我认为您不需要使用requests.Session(),只要使用requests.post(),除非您计划对后续请求多次使用Session对象

相关问题 更多 >