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

使用python请求和Mailchimp API v3添加成员,python,python-requests,mailchimp-api-v3.0,Python,Python Requests,Mailchimp Api V3.0,我试图学习更多关于使用http请求和Mailchimp API的知识,但我似乎不知道如何使用post请求将成员添加到列表中。我尝试了多种配置,我想我取得了一些进展,因为我的回答从405到401,现在我得到了400。我假设这意味着我正在进行身份验证,但我对请求的格式设置不正确 我已经将它用于python mailchimp库,但我想实际学习如何使用HTTP请求。我几乎找不到在Mailchimp中使用python请求的例子 (显然,我把我的实际列表、用户名和密钥都放进去了) 以下是我的回应: >

我试图学习更多关于使用http请求和Mailchimp API的知识,但我似乎不知道如何使用post请求将成员添加到列表中。我尝试了多种配置,我想我取得了一些进展,因为我的回答从405到401,现在我得到了400。我假设这意味着我正在进行身份验证,但我对请求的格式设置不正确

我已经将它用于python mailchimp库,但我想实际学习如何使用HTTP请求。我几乎找不到在Mailchimp中使用python请求的例子

(显然,我把我的实际列表、用户名和密钥都放进去了)

以下是我的回应:

>>> 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)
导入请求,json 成员https://us15.api.mailchimp.com/3.0/lists/XXXXXXXX/members/' auth=('my\u username'、'my\u apikey') headers={'Content-Type':'application/json'} 数据1={ “电子邮件地址”:“它能告诉你”blah@blah.com是假的 “状态”:“已订阅”, “合并字段”:{ “FNAME”:“John”, “LNAME”:“Doe” } } response=requests.post(members\u 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)
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)
导入请求,json 成员https://us15.api.mailchimp.com/3.0/lists/XXXXXXXX/members/' auth=('my\u username'、'my\u apikey') headers={'Content-Type':'application/json'} 数据1={ “电子邮件地址”:“它能告诉你”blah@blah.com是假的 “状态”:“已订阅”, “合并字段”:{ “FNAME”:“John”, “LNAME”:“Doe” } } response=requests.post(members\u url,auth=auth,headers=headers,json=data1) 我的问题是#1我对json数据进行了双重编码#2 mailchimp识别出明显的BS电子邮件地址,如blah@blah.com


感谢@Alasdair

检查响应内容
response.content
,查看错误消息是否解释了问题。您对数据进行了两次json编码。使用
requests.post(…,data=json.dumps(data1))
requests.post(…,json=data1)
。谢谢@Alasdair,你为我指明了正确的方向。我检查了response.content,它说,
…Schema描述了对象,但由于对json数据进行了双重编码,找到了字符串。我修复了它(我以前尝试过两种方法),它说
blah@blah.com看起来是假的或无效的,请输入一个真实的电子邮件地址。“,”实例
,这就是为什么我无法让它以任何方式工作。我输入了一个真实的地址,现在就可以了。再次感谢…又是一次学习经历。很高兴你成功了!请添加您的解决方案作为答案,而不是更新问题。这样更容易看出你的问题已经解决了。