如何在';文件体';在Python API post请求中?
我正试图使用Python中的API将一个文件发布到sendinblue,并努力解决如何放置而不是“dataset1”的问题。如果我手动键入文件内容,但如果我指定了一个文件,它就会起作用-我尝试过csv、json、txt格式,但都不起作用。错误消息说“我们在您上传的文件中找不到任何有效的电子邮件或短信”,我认为它不喜欢“文件体”格式 我的代码如下: 非常感谢您的帮助如何在';文件体';在Python API post请求中?,python,api,post,import,sendinblue,Python,Api,Post,Import,Sendinblue,我正试图使用Python中的API将一个文件发布到sendinblue,并努力解决如何放置而不是“dataset1”的问题。如果我手动键入文件内容,但如果我指定了一个文件,它就会起作用-我尝试过csv、json、txt格式,但都不起作用。错误消息说“我们在您上传的文件中找不到任何有效的电子邮件或短信”,我认为它不喜欢“文件体”格式 我的代码如下: 非常感谢您的帮助 import requests url = "https://api.sendinblue.com/v3/contact
import requests
url = "https://api.sendinblue.com/v3/contacts/import"
payload = {
"listIds": [12],
"emailBlacklist": False,
"smsBlacklist": False,
"updateExistingContacts": True,
"emptyContactsAttributes": False,
"fileBody": "dataset1"
headers = {
"accept": "application/json",
"content-type": "application/json",
"api-key": "APIKEY"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
这应该行得通。如果没有,你可以尝试一些解决方案
files = {'upload_file': open('file.txt','rb')}
url = "https://api.sendinblue.com/v3/contacts/import"
headers = {
"accept": "application/json",
"content-type": "application/json",
"api-key": "APIKEY"
}
response = requests.request("POST", url, files=files, headers=headers)
我认为您需要的是
fileUrl
,而不是可以从中引用的fileBody
。
您提到,如果您手动键入内容,则可以正常工作。因此,请尝试在请求中使用
fileUrl
参数的url(可公开访问),并让我知道它是否适合您 这回答了你的问题吗?非常感谢。在这段代码中,我应该在哪里指定标题(API键)?我添加了标题,@Irinaobraccovai现在已经尝试了这段代码,它给了我一个“响应[400]”…你需要用你的键替换APIKEY
。你可以阅读这里的文档,我已经在代码中使用了我的API密钥。谢谢。您知道有没有办法在Python中将csv文件转换为原始URL链接?(无需通过Github手动执行)我认为您需要将csv文件保存在Github或任何其他云中,以便Sendinblue的服务器可以访问该文件。因此,您需要在请求中传递该文件的Url。一旦你的联系人被导入,你就可以删除该文件。是的,github的问题是我必须手动上传文件并转换,但我需要这是一个自动过程。我还尝试从OneDrive创建URL链接,但也不起作用。您计划多久导入一次联系人?如果您不打算经常导入,我建议您手动创建并上载该文件。但如果您需要经常这样做,您可以尝试使用AWSS3,这应该可以解决您的问题。您需要像现在这样创建csv,然后将其保存在S3上。然后,您可以将该url用于身体请求。