Constant Contact API,添加新联系人

时间:2011-07-21 10:37:42

标签: api constants contact

我正在尝试将新的电子邮件订阅者添加为我的联系人列表中的联系人。但我得到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';
        }

1 个答案:

答案 0 :(得分:0)

好的,我可以通过发布来解决问题。即,替换以下代码

curl_setopt($session, CURLOPT_PUT, 1);

使用以下代码

curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_POSTFIELDS, $entry);