Я попытался использовать образец фрагмента PHP на (страница документа Marketo 🙂 Обновление содержимого шаблона целевой страницы по идентификатору с заменой моего REST API URL, client_id, client_secret и простого файла шаблона. Это просто производит BOOL (ложь) в следствии.
Когда я использовал немного другой equivelent, я обнаружил, что мой вызов REST приводит к … object (stdClass) # 3 (3) {[«requestId»] => string (16) «e714 # 153c7bf644f» [«success»] => bool (false) [«errors»] => array (1) {[ 0] => object (stdClass) # 4 (2) {[«code»] => string (3) «611» [«message»] => string (12) «Системная ошибка»}}}
Что случилось с загадочным кодом ошибки 611 — что это на самом деле означает, так как «системная ошибка» недостаточно полезна, чтобы знать — почему это происходит в этом случае?
Этот API REST для обновления шаблонов целевых страниц все еще работает?
<?php
/*
Some other functions that made use of $lp_template_id are up here
*/
$landingPageTemplate = new UpdateLandingPageTemplateContent();
$landingPageTemplate->id = 1234;
$landingPageTemplate->content = new CURLFile("/path_to_my_template/{$lp_template_id}", "text/html", "content");
print_r($landingPageTemplate->postData());
class UpdateLandingPageTemplateContent{
private $host = "https://xxx-xxx-xxx.mktorest.com";
private $clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
private $clientSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
public $id;//id of the teplate to update
public $content; //HTML content of Template, required
public function postData(){
$url = $this->host . "/rest/asset/v1/landingPageTemplate/" . $this->id . "/content.json?access_token=" . $this->getToken();
$ch = curl_init($url);
$requestBody = array("content" => $this->content);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('accept: application/json','Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);
curl_getinfo($ch);
$response = curl_exec($ch);
return $response;
}
private function getToken(){
$ch = curl_init($this->host . "/identity/oauth/token?grant_type=client_credentials&client_id=" . $this->clientId . "&client_secret=" . $this->clientSecret);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('accept: application/json',));
$response = json_decode(curl_exec($ch));
curl_close($ch);
$token = $response->access_token;
return $token;
}
}
Я просто сделал простое программирование, указав путь к файлу.
$landingPageTemplate->content = new CURLFile("/path_to_my_template/{$lp_template_id}", "text/html", "content");
должен был быть
$landingPageTemplate->content = new CURLFile("/path_to_my_template/{$landingPageTemplate->id}", "text/html", "content");
Других решений пока нет …