MailChimp API v2:验证错误
MailChimp API v2: Validation Error
我在使用 Mailchimp 时遇到了这个问题,我的呼叫似乎被拒绝并失败了。不知何故,Mailchimp 支持甚至看不到我试图用这段代码给他们打电话
$data = array(
'apikey' => "APIKEY-USXX",
'cid' => "CID",
);
$data = json_encode($data);
echo '<pre>';
var_dump($data);
echo '</pre>';
$submit_url = "https://us10.api.mailchimp.com/2.0/reports/opened.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $submit_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode($data));
$result = curl_exec($ch);
curl_close ($ch);
$info = json_decode(json_encode(json_decode($result)), true);
echo '<pre>';
var_dump($info);
echo '</pre>';
奇怪的是,这对我用 API 1.3 进行的任何其他调用都很好用。我真的迷失在我在这里做错了什么。希望你们能帮帮我?
提前致谢。
** 编辑 **
这是我的回复:
array(4) {
["status"]=>
string(5) "error"
["code"]=>
int(-100)
["name"]=>
string(15) "ValidationError"
["error"]=>
string(31) "You must specify a apikey value"
}
对我有用的最终代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $submit_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.6');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
curl_close ($ch);
确保提交 URL (us10) 中的 'dc' 与您的 API 密钥的最后一部分匹配。
另外...尝试将以下选项添加到调用中:
curl_setopt($ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.6');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
您还可以添加以下选项以更明确地调试调用
curl_setopt($ch, CURLOPT_VERBOSE, true);
我在使用 Mailchimp 时遇到了这个问题,我的呼叫似乎被拒绝并失败了。不知何故,Mailchimp 支持甚至看不到我试图用这段代码给他们打电话
$data = array(
'apikey' => "APIKEY-USXX",
'cid' => "CID",
);
$data = json_encode($data);
echo '<pre>';
var_dump($data);
echo '</pre>';
$submit_url = "https://us10.api.mailchimp.com/2.0/reports/opened.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $submit_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode($data));
$result = curl_exec($ch);
curl_close ($ch);
$info = json_decode(json_encode(json_decode($result)), true);
echo '<pre>';
var_dump($info);
echo '</pre>';
奇怪的是,这对我用 API 1.3 进行的任何其他调用都很好用。我真的迷失在我在这里做错了什么。希望你们能帮帮我?
提前致谢。
** 编辑 ** 这是我的回复:
array(4) {
["status"]=>
string(5) "error"
["code"]=>
int(-100)
["name"]=>
string(15) "ValidationError"
["error"]=>
string(31) "You must specify a apikey value"
}
对我有用的最终代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $submit_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.6');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
curl_close ($ch);
确保提交 URL (us10) 中的 'dc' 与您的 API 密钥的最后一部分匹配。
另外...尝试将以下选项添加到调用中:
curl_setopt($ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.6');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
您还可以添加以下选项以更明确地调试调用
curl_setopt($ch, CURLOPT_VERBOSE, true);