用Python向mailchimp API发送POST请求

2024-10-01 07:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图向mailchimp api发送POST请求,以向列表中添加新成员,但始终收到一个错误消息,即api密钥丢失。当我发送一个get请求时,我在URL中包含了这个密钥,并且它正常工作。在

从Mailchimp的文档来看,api键应该是请求的一部分,参数(email峎u address和status)应该是主体的一部分,但是我不明白如何使用请求来做到这一点。(我知道Python有一个mailchimp模块,但我有一些定制的事情要做,我想把这个问题弄清楚)

这是我要写的帖子:

import requests
url="https://us15.api.mailchimp.com/3.0/lists/xxxxx/members/"

header ={"Authorization":"apikey xxxxx",
"email_address":"test@gmail.com",
"status":"subscribed"}

r=requests.post(url,header)
print r.text

我得到的错误如下:{“type”:“http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/”,“title”:“API密钥丢失”,“status”:401,“detail”:“您的请求没有包含API密钥。”,“instance”:“”}

我还试图将这个请求放在Postman中,这样可以很容易地将头和正文分开,但它给出的响应是相同的。在

我也尝试过使用Mailchimp3包,但这给了我一个错误的请求。我使用的代码如下:

^{pr2}$

但是,我得到了以下错误:requests.exceptions.HTTPError:400客户端错误:对url的错误请求:https://us15.api.mailchimp.com/3.0/lists/2be23de2cc/members


Tags: httpscomapiurladdressemailstatus错误
2条回答

忽略代码中的错误header ={"Authorization","apikey xxxxx",,您不发送凭证或头中的数据。首先需要进行身份验证,然后将订户信息作为POST有效负载发送,如下所示:

import pprint
import requests

username = 'foo'
apikey = 'sekret-key-goes-here'
url = "https://us15.api.mailchimp.com/3.0/lists/xxxxx/members/"

post_params = {'email_address': 'foo@example.com', 'status': 'subscribed'}

r = requests.post(url, auth=(username, apikey), json=post_params)
r.raise_for_status()

results = r.json()
pprint.pprint(results)

你为什么不试试这个包裹? https://github.com/charlesthk/python-mailchimp

您可以通过:

from mailchimp3 import MailChimp
client = MailChimp('my_user', '{}-{}'.format(access_token, data_center))
client.lists.members.create('my_list_id', {'email_address': 'test@gmail.com', 'status': 'subscribed'})

测试时,请不要用假邮件测试,因为Mailchimp有一种全球禁止列表,可以忽略垃圾邮件发送者使用的电子邮件。在本例中,它将返回一个http400。在

相关问题 更多 >