API постоянного контакта, Добавление нового контакта

Я пытаюсь добавить нового подписчика электронной почты в качестве контакта в свой список контактов. Но я получаю ошибку 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';
        }

person MACMAN    schedule 21.07.2011    source источник


Ответы (1)


Хорошо, я могу решить проблему, опубликовав ее. то есть заменил следующий код

curl_setopt($session, CURLOPT_PUT, 1);

со следующими кодами

curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_POSTFIELDS, $entry);
person MACMAN    schedule 29.07.2011
comment
Привет, я хотел бы знать, как установить SubID? где вы его взяли и как его создать. - person gfivehost; 19.05.2012
comment
SubID вы получаете от учетной записи постоянного контакта. - person MACMAN; 21.05.2012