Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求中的PDF_Python_Pdf_Post_Request_Response - Fatal编程技术网

Python请求中的PDF

Python请求中的PDF,python,pdf,post,request,response,Python,Pdf,Post,Request,Response,我在python post请求中发送pdf时遇到问题。我的服务器只支持“表单数据”,不支持JSON 这是我的密码: import requests from requests.auth import HTTPBasicAuth import os import json url = "myUrl" files ={'fileUpload': open(os.path.join('_my_path', 'my_file.pdf'), 'rb')} payload = "--my_boundary

我在python post请求中发送pdf时遇到问题。我的服务器只支持“表单数据”,不支持JSON

这是我的密码:

import requests
from requests.auth import HTTPBasicAuth
import os
import json

url = "myUrl"
files ={'fileUpload': open(os.path.join('_my_path', 'my_file.pdf'), 'rb')}
payload = "--my_boundary\r\nContent-Disposition: form-data; name=\"integrationClass\"\r\n\r\nBPMOnline\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"SITE\"\r\n\r\n21218\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"PROCESS_NAME\"\r\n\r\ncreate\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"DOCUMENT_ID\"\r\n\r\ndoc bpmonline create\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"DOCUMENT_TYPE\"\r\n\r\nsample\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"CLIENT_NAME\"\r\n\r\ncname\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"CLIENT_ID\"\r\n\r\n45678\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"USER\"\r\n\r\nadmin\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"fileUpload\"; filename=\"download.pdf\"\r\nContent-Type: application/pdf\r\n\r\n\r\n--my_boundary\r\nContent-Disposition: form-data; name=\"uuid\"\r\n\r\n\r\n--my_boundary--"
headers = {
    'content-type': "multipart/form-data; boundary=my_boundary",
    'cache-control': "no-cache",
    }

response = requests.post(url, data=payload,files=files, headers=headers)

print(response.text)

错误是:
“ValueError:数据不能是字符串。”

我认为您不能在多部分编码的文件中同时发送数据和文件,因此您也可以尝试将数据设置为“文件”。大概是这样的:

files = {
'data' : data,
'document': open('file_name.pdf', 'rb')
}

headers = {
'Accept': "multipart/form-data",
'Content-Type': "application/pdf",
'Cache-Control': "no-cache",
}

r = requests.post(url, files=files, headers=headers)

data=
参数用于其他表单字段,例如
将是
data={'test':'something'}
。它希望格式是字典,而不是字符串。我不知道如何手动定义边界(用于文件上传),这些边界通常由请求模块自动创建。您创建手动结构化POST请求的过程已经进行了一半,但如果请求模块处于自动过程的一半。您是否查看了上载多部分数据的方法?是@MauriceMeyer,我使用Fiddler,我可以看到请求中的所有参数。@Torxed我有一半的解决方案:D我可以发送pdf和适当的参数,但我在网站上看不到它们,这对我来说真的是个问题。参数有边界我在有效负载变量中自己设置,但pdf有边界我设置和不同的随机边界。谢谢,在Fiddler中,我可以看到works(pdf以表单数据的形式发送)但是,我必须在某个地方定义“内容类型”:“应用程序/pdf”,因为在网站上无法打开pdf。你知道吗?将内容添加为标题并相应发送。更新:检查更新的答案。:)问题已经解决了,但有一个新问题:现在,我的表单数据看起来像:---WebKitFormBoundary7MA4YWxkTrZu0gW--ea199251f2fea188a655f0e79b64c5d8内容处理:表单数据;name=“fileUpload”;filename=“download.pdf”内容类型:应用程序/pdf%pdf-1.5%。。。。。。。我的边界下有一个新号码(-ea199251f2fea188a655f0e79b64c5d8),但它不工作,我的服务器无法接收此pdf:(好的,谢谢..你很好,帮助了..非常感谢..我将在其他服务器上试用:)