我正在尝试将新的电子邮件订阅者添加为我的联系人列表中的联系人。但我得到404错误。以下是我的代码。有人可以帮忙吗?
$userNamePassword = $Key . '%' . $UN . ':' . $PW ;
$entry = '<entry xmlns="http://www.w3.org/2005/Atom">
<id>http://api.constantcontact.com/ws/customers/'.$UN.'/contacts/'.$SubID.'</id>
<title type="text">Contact: '.$email.'</title>
<updated>2008-04-25T19:29:06.096Z</updated>
<author></author>
<content type="application/vnd.ctct+xml">
<Contact xmlns="http://ws.constantcontact.com/ns/1.0/" id="http://api.constantcontact.com/ws/customers/'.$UN.'/contacts/'.$SubID.'">
<EmailAddress>'.$email.'</EmailAddress>
<OptInSource>ACTION_BY_CUSTOMER</OptInSource>
<ContactLists>
<ContactList id="http://api.constantcontact.com/ws/customers/'.$UN.'/lists/0">
</ContactLists>
</Contact>
</content>
</entry>';
$tmpfile = tmpfile();
fwrite($tmpfile, $entry);
fseek($tmpfile, 0);
// Initialize the curl session
$request ="https://api.constantcontact.com/ws/customers/".$UN."/contacts/".$SubID;
$session = curl_init($request);
// Set up Digest authentication. Put your API key, and CTCT username/pwd here
$userNamePassword = $Key . '%' . $UN . ':' . $PW ;
curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($session, CURLOPT_USERPWD, $userNamePassword);
curl_setopt($session, CURLOPT_INFILE, $tmpfile);
fclose($tmpfile); // Close temp file because it no longer needed
curl_setopt($session, CURLOPT_PUT, 1);
curl_setopt($session, CURLOPT_INFILESIZE, strlen($entry));
curl_setopt($session, CURLOPT_HTTPHEADER, Array("Content-Type:application/atom+xml"));
curl_setopt($session, CURLOPT_HEADER, false); // Do not return headers
curl_setopt($session, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($session);
$httpcode = curl_getinfo($session, CURLINFO_HTTP_CODE);
curl_close($session);
echo("httpcode error is ".$httpcode);
if ($httpcode > 199 && $httpcode < 300){
return 'Success';
}else{
return 'False';
}
答案 0 :(得分:0)
好的,我可以通过发布来解决问题。即,替换以下代码
curl_setopt($session, CURLOPT_PUT, 1);
使用以下代码
curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_POSTFIELDS, $entry);