我需要进行API调用,以上传文件以及带有有关文件详细信息的JSON字符串。
我正在尝试使用python请求库来执行此操作:
import requests info = { 'var1' : 'this', 'var2' : 'that', } data = json.dumps({ 'token' : auth_token, 'info' : info, }) headers = {'Content-type': 'multipart/form-data'} files = {'document': open('file_name.pdf', 'rb')} r = requests.post(url, files=files, data=data, headers=headers)
这将引发以下错误:
raise ValueError("Data must not be a string.") ValueError: Data must not be a string
如果我从请求中删除“文件”,则它可以工作。 如果我从请求中删除了“数据”,它将起作用。 如果我不将数据编码为JSON,则可以使用。
因此,我认为错误与在同一请求中发送JSON数据和文件有关。
关于如何使它工作的任何想法?
不要使用json进行编码。
import requests info = { 'var1' : 'this', 'var2' : 'that', } data = { 'token' : auth_token, 'info' : info, } headers = {'Content-type': 'multipart/form-data'} files = {'document': open('file_name.pdf', 'rb')} r = requests.post(url, files=files, data=data, headers=headers)
请注意,这不一定是您想要的,因为它将成为另一个表单数据部分。