我正在尝试与mailchimp api进行交互,我遇到了subscribe方法的问题。我已将问题跟踪到我对数据进行编码的位置。似乎urllib.urlencode没有正确编码我的结构。有问题的结构是:{'email':{'email':'example@email.com'}}
我的问题是,使用urllib2通过请求发送结构的正确方法是什么?
答案 0 :(得分:3)
根据他们的documentation,MailChimp希望数据为JSON(具有正确的内容类型标题),而不是URL编码的表单数据。
使用urllib2,这是一个关于如何使用正确的标题来发布JSON数据的示例,取自this answer:
import urllib2
data = "{'email':{'email':'example@email.com'}}"
req = urllib2.Request("http://some/API/endpoint", data, {'Content-Type': 'application/json'})
f = urllib2.urlopen(req)
response = f.read()
f.close()
但是,我建议你使用比urllib2更容易使用的Python-Requests,这里是使用请求的相同代码:
from requests import post
data = "{'email':{'email':'example@email.com'}}"
response = post("http://some/API/endpoint", data=data, headers={'Content-type': 'application/json', 'Accept': 'text/plain'}).text