python - 使用 python requests 和 Mailchimp API v3 添加成员

标签 python python-requests mailchimp-api-v3.0

我正在尝试了解有关使用 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':'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="73111f121b33111f121b5d101c1e" rel="noreferrer noopener nofollow">[email protected]</a>',
    '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 '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="70121c111830121c11185e131f1d" rel="noreferrer noopener nofollow">[email protected]</a> 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 '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e48688858ca48688858cca878b89" rel="noreferrer noopener nofollow">[email protected]</a> 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 电子邮件地址,例如 [email protected]

谢谢@Alasdair

关于python - 使用 python requests 和 Mailchimp API v3 添加成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068456/

相关文章:

python - 如何访问 numpy 默认全局随机数生成器

python - 如何根据功率谱密度确定我的数据是否为 ​​1/f 噪声?

ajax - merge_fields 错误 400 - Mailchimp api v3

python - 条件概率 - Python

python - 无法使用套接字获取所需内容

Python 请求 - 无法解析 URL

python-2.7 - 使用 Python 中的请求库测量 HTTP 响应时间。我做对了吗?

python - 如何使用python请求获取重定向url

ruby-on-rails - 如何防止重试 sidekiq 上的某些异常/错误

javascript - 如何通过react在express上向mailchimp发送post请求