很抱歉,如果这真的很模糊,我对cURL和API的互动都是新手。
目前,我创建了一个URL,其中包含所需的身份验证详细信息,可访问API(点播程序)并使用给定ID显示地址簿中的联系人。
$auth_url = 'https://' . $apiemail .':' . $apipassword . '@api.dotmailer.com/v2/address-books/' . $listID .'/contacts';
这让我觉得有点像这样:
https://username:password@api.dotmailer.com/v2/address-books/listID/contacts
以下是该页面的XML
<ApiContact>
<Id>1058905201</Id>
<Email>email@email.com</Email>
<OptInType>Unknown</OptInType>
<EmailType>Html</EmailType>
<DataFields i:nil="true"/>
<Status>Subscribed</Status>
</ApiContact>
</ArrayOfApiContact>
现在我需要将一个变量POST到API。我的变量是$useremail
我计划使用cURL来实现这一点,我使用PHP并避免使用REST而不是使用SOAP。
我对此完全陌生,但我接受了一些不起作用的代码,但是我试过了!
// Authenticate
$auth_url = 'https://' . $apiemail .':' . $apipassword . '@api.dotmailer.com/v2/address-books/' . $listID .'/contacts';
// open connection
$ch = curl_init();
// set the URL
curl_setopt($ch,CURLOPT_URL, $auth_url);
curl_setopt($ch,CURLOPT_POST, $useremail);
// execute post
$result = curl_exec($ch);
// close connection
curl_close($ch);
我知道这是关闭但是:
<email>
XML上的操作PostAddressBookContacts()
,那么这是怎么回事?对不起,如果这是模糊的。我很感激任何人的建议。
答案 0 :(得分:1)
首先,如果您在浏览器中启动此网址:
https://username:password@api.dotmailer.com/v2/address-books/listID/contacts
它对你有用吗?
如果是,请回显$ auth_url。
$auth_url = 'https://' . $apiemail .':' . $apipassword . '@api.dotmailer.com/v2/address-books/' . $listID .'/contacts';
echo $auth_url;
并检查您的网址是否构造正确。然后:
修改强>
$data = array("Email" => "email@email.com");
$data_string = json_encode($data);
$req = curl_init($auth_url);
curl_setopt($req, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($req, CURLOPT_POST, 1);
curl_setopt($req, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($req, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$res = curl_exec($req);
curl_close($req);