Json 从控制器订阅Mailchimp,无需表单CakePHP
我正在为Android应用程序创建Web服务。Json 从控制器订阅Mailchimp,无需表单CakePHP,json,cakephp,mailchimp,Json,Cakephp,Mailchimp,我正在为Android应用程序创建Web服务。 Android应用程序有一个“新闻稿订阅”选项,有3个字段: -电子邮件 -姓氏 -电话号码 应用程序以json格式将这些数据发送到my web服务上的newsletteController.php: { "Newsletter":{ "user":{ "first_name":"Hugo", "surname":"Dumoulin", "phone":
Android应用程序有一个“新闻稿订阅”选项,有3个字段:
-电子邮件
-姓氏
-电话号码 应用程序以json格式将这些数据发送到my web服务上的
newsletteController.php
:
{
"Newsletter":{
"user":{
"first_name":"Hugo",
"surname":"Dumoulin",
"phone":"0606060606",
"email":"hugo@gmail.fr"
}
}
}
我现在需要将此人添加到我的Mailchimp订户列表中。如何使用json数据从控制器执行此操作,而不使用任何形式 我知道我必须将这些数据发布到如下url(mailchimp给我的): http://*****.us1.list manage.com/subscribe/post?u=**************&id=******** 有人知道我是如何做到这一点的吗?
提前感谢。该列表管理URL旨在让用户通过浏览器点击,并且有几种不同的事情可能会使您的过程出错。具体来说,MailChimp有时可以显示验证码,如果它认为订阅来自机器人 先决条件 更好的方法是使用MailChimp的API。你需要四样东西:
us7
,当您登录到MailChimp时,它位于URL的开头。我将使用下面的us7,但您应该替换您自己的1295ff8fdb
李>
FNAME
、LNAME
和PHONE
,但为了使其正常工作,您需要替换自己的Authorization
的标题,标题的内容是单词“Basic”,后跟空格,然后是用户名和密码,以冒号分隔,Base64编码。对于MailChimp,用户名是不相关的,您使用API密钥作为密码
幸运的是,Cake的客户提供了开箱即用的支持。要使用它,只需将一个auth
键传递到请求的options参数中。该值应如下所示:array('type'=>'basic','username'=>'anything','password'=>$MAILCHIMP\u API\u KEY)
。(注意,MailChimp不使用用户名,您可以传递任何需要的字符串
有效载荷
使用上面的示例信息,我会打一个POST
电话到https://us7.api.mailchimp.com/3.0/lists/1295ff8fdb/members/
,JSON负载如下所示:
{
"email_address": "hugo@leggett.fr",
"status": "subscribed",
"merge_fields": {
"FNAME": "Hugo",
"LNAME": "Dumoulin",
"PHONE": "0606060606"
}
}
<?php
use Cake\Network\Http\Client;
$http = new Client();
$subscriberData = array(
'email_address' => 'hugo@leggett.fr',
'status' => 'subscribed',
'merge_fields' => array(
'FNAME' => 'Hugo',
'LNAME' => 'Dumoulin',
'PHONE' => '0606060606'
)
);
$response = $http->post(
'https://us7.api.mailchimp.com/3.0/lists/1295ff8fdb/members/',
json_encode($subscriberData),
array(
'type' => 'json'
'auth' => array(
'type' => 'basic',
'username' => 'anything',
'password' => $MAILCHIMP_API_KEY
)
)
);
样品请求
因此,如果您正在使用上面链接的HTTP客户端,代码可能如下所示:
{
"email_address": "hugo@leggett.fr",
"status": "subscribed",
"merge_fields": {
"FNAME": "Hugo",
"LNAME": "Dumoulin",
"PHONE": "0606060606"
}
}
<?php
use Cake\Network\Http\Client;
$http = new Client();
$subscriberData = array(
'email_address' => 'hugo@leggett.fr',
'status' => 'subscribed',
'merge_fields' => array(
'FNAME' => 'Hugo',
'LNAME' => 'Dumoulin',
'PHONE' => '0606060606'
)
);
$response = $http->post(
'https://us7.api.mailchimp.com/3.0/lists/1295ff8fdb/members/',
json_encode($subscriberData),
array(
'type' => 'json'
'auth' => array(
'type' => 'basic',
'username' => 'anything',
'password' => $MAILCHIMP_API_KEY
)
)
);
我使用了一个插件@Abhishek我要看一看谢谢!哇。谢谢你的详细解释。确实这似乎是正确的方法,我会尽快尝试。非常感谢!回答得很好,但它没有显示如何使用API密钥进行身份验证。@donot——还有其他问题需要解释如何使用MailChimp的身份验证可能更彻底,但我已经更新了这个答案,在这里也包括了CakePHP特有的内容。