使用 python 请求和 Mailchimp API v3 添加成员

Add a member using python requests and Mailchimp API v3

我正在尝试了解有关使用 http 请求和 Mailchimp API 的更多信息,但我似乎无法弄清楚如何使用 post 请求将成员添加到列表中。我尝试了多种配置,我想我取得了一些进展,因为我的响应从 405 变为 401,现在我得到了 400。我认为这意味着我正在通过身份验证,但我错误地格式化了请求.

我已经让它在 python mailchimp 库中运行,但我想真正了解如何使用 HTTP 请求。我几乎找不到将 python 请求与 Mailchimp 一起使用的示例。

(显然我输入了实际的 list_id、my_username 和 my_apikey)

import requests, json


members_url = 'https://us15.api.mailchimp.com/3.0/lists/XXXXXXXX/members/'
auth = ('my_username', 'my_apikey')
headers = {'Content-Type': 'application/json'}


data1 = {
    'email_address':'blah@blah.com',
    'status':'subscribed',
    'merge_fields':{
        'FNAME':'John',
        'LNAME':'Doe'
        }
    }

payload = json.dumps(data1)

response = requests.post(members_url, auth=auth, headers=headers, json=payload)

这是我的回复:

>>> response
<Response [400]>

我很困惑....我做错了什么?

这有效:

import requests, json


members_url = 'https://us15.api.mailchimp.com/3.0/lists/XXXXXXXX/members/'
auth = ('my_username', 'my_apikey')
headers = {'Content-Type': 'application/json'}


data1 = {
    'email_address':'<a real email address>',  #it could tell 'blah@blah.com was fake'
    'status':'subscribed',
    'merge_fields':{
        'FNAME':'John',
        'LNAME':'Doe'
        }
    }

response = requests.post(members_url, auth=auth, headers=headers, json=data1)

这有效:

import requests, json


members_url = 'https://us15.api.mailchimp.com/3.0/lists/XXXXXXXX/members/'
auth = ('my_username', 'my_apikey')
headers = {'Content-Type': 'application/json'}


data1 = {
    'email_address':'<a real email address>',  #it could tell 'blah@blah.com was fake'
    'status':'subscribed',
    'merge_fields':{
        'FNAME':'John',
        'LNAME':'Doe'
        }
    }

response = requests.post(members_url, auth=auth, headers=headers, json=data1)

我的问题是 #1 我对 json 数据进行了双重编码,#2 mailchimp 显然可以识别 BS 电子邮件地址,例如 blah@blah.com

感谢@Alasdair