提问者:小点点

Python 中的多部分 POST 请求


我有以下curl命令,在终端中完美运行

curl --location --request POST 'https://online.tet_url' --form license='test_licence' --form product='pdfserver' --form readUSdates='true' --form pdf-filename='@/dir/test.pdf'

请注意,pdf-filename是指pdf文件在我的本地机器上的位置。当我尝试使用python请求包时,例如:

url = "https://online.tet_url"
payload = {"license": 'test_licence',
'product': 'pdfserver',
'readUSdates': 'true',
'pdf-filename': '@/dir/test.pd'}
headers = {
  'Content-Type': 'multipart/form-data'
}
response = requests.request("POST", url, headers=headers, data = payload)

我收到400错误,并显示以下消息:

Apache Tomcat/8.0.32-错误报告H1{字体家族:塔霍马、阿里尔、无衬线;颜色:白色;背景颜色:#525D76;字体大小: 22px;}H2{字体家族:塔霍马、阿里尔、无衬线;颜色:白色;背景颜色:#525D76;字体大小: 16px;}H3{字体家族:塔霍马、阿里尔、无衬线;颜色:白色;背景颜色:#525D76;字体大小: 14px;}身体{字体家族:塔霍马、阿里尔、无衬线;颜色:黑色;背景颜色:白色;}B{字体家族:塔霍马、阿里尔、无衬线;颜色:白色;背景颜色:#525D76;}P{字体家族:塔霍马、阿里尔、无衬线;背景:白色;颜色:黑色;字体大小: 12px;}A{颜色:黑色;}A.name{颜色:

type状态报告

消息不支持的媒体类型

描述服务器拒绝了此请求,因为请求实体的格式不受所请求方法的请求资源的支持。

请注意,我试图将其导入Postman,但当我从那里运行时,它不起作用。我尝试过使用https://curl.haxx.se/docs/manpage.html但它再次失败了。

如果你能帮我用Python发布这个卷曲,我将不胜感激。


共1个答案

匿名用户

对于上传文件,我们应该使用一个单独的包

from pathlib import Path

url = 'https://online.tet_url'
data = {
        'license': 'test_licence',
        'product': 'pdfserver',
        'readUSdates': 'true }
files = {
        'pdf-filename': Path(directory).open('rb'),
        }
response = requests.request('POST', url, data=data, files=files)