python - Python 发送 POST 请求/multipart/form-data
问题描述
我只是在工作中处理 API 连接。我已经发出了一些 GET 和 PUT 请求,但现在我遇到了 POST 问题。API 文档在这里。这是我测试但收到 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)
有人知道我该如何处理吗?
解决方案
看起来您缺少order_documents
参数,它需要是一个数组并且还需要称为 order_documents。
尝试将data
变量更改为:
data = {"order_documents": [ {'file_name':"fv.pdf", 'type_code':'CUSTOMER_INVOICE' } ] }
API 期望files
作为参数名称,您的字典将发送file
到服务器。files
您提供的参数名称session.post
仅用于requests
库,而不是发送到服务器的实际参数。API 还需要一个数组中的多个文件,因此您需要更改文件对象。
files = [
('files', ('fv.pdf', open(r"C:\python\API\fv.pdf", 'rb')),
]
另外,我认为您不需要使用 requests.Session(),只需使用 requests.post(),除非您计划多次使用会话对象进行后续请求。
推荐阅读
- javascript - 从图像中获取日期
- java - 如何向 Eclipse e4 RCP 应用程序添加依赖项?
- javascript - Reatcjs 访问数组和嵌套对象中的对象属性
- node.js - MongoDb : Mongoose 将不同集合中的元素添加到另一个集合
- javascript - 将 Webpack 与 Node 后端连接起来
- apache-spark - Apache Spark MLlib 集群仅在一台机器上运行,尽管在集群内部(独立)
- javascript - Sheets / App Script中将字符串拆分为单独单元格的方法
- sql - 透视多列和多行
- python - 熊猫数据框中的 iloc 函数用法
- sql-update - Amazon Redshift 中的光标声明