Anastasiya385
@Anastasiya385

Ошибка при сохранении сегмента, созданного из файла в Яндекс Аудитории?

Здравствуйте столкнулась с проблемой при интеграции с Яндекс Аудиториями. При отправке post для сохранения сегмента, созданного из файла возникает ошибка вида "Could not read JSON, error in line 1, column 2".
Ссылка на документацию https://yandex.ru/dev/audience/doc/segments/confir... ниже приведу исходный код:

//Исходник
$token = '';
$curl = curl_init("https://api-audience.yandex.ru/v1/management/segme...");

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array('file' => new CurlFile(realpath('test2.csv'))));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data", "Authorization: OAuth $token"));

$result = curl_exec($curl);
if(!$result) { echo ("Ошибка: ".curl_error($curl).'('.curl_errno($curl).')'); }
else { echo $result; }
$segId = json_decode($result);
curl_close($curl);

$data_string = array("segment" => array('id' => $segId->segment->id, 'name' => 'test', 'hashed' => 0, 'content_type' => 'crm'));

$curl2 = curl_init("https://api-audience.yandex.ru/v1/management/segment/".$segId->segment->id."/confirm");
curl_setopt($curl2, CURLOPT_POST, true);
curl_setopt($curl2, CURLOPT_POSTFIELDS, json_encode($data_string));
curl_setopt($curl2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl2, CURLOPT_HTTPHEADER, array("Authorization: OAuth $token"));

$result2 = curl_exec($curl2);
if(!$result2) { echo ("Ошибка: ".curl_error($curl2).'('.curl_errno($curl2).')'); }
else { echo $result2; }
curl_close($curl2);

Результаты запроса:
{"segment":{"id":13222537,"type":"uploading","status":"uploaded","has_guests":false,"guest_quantity":0,"can_create_dependent":false,"has_derivatives":false,"hashed":false,"item_quantity":1006,"guest":false}}{"errors":[{"error_type":"invalid_json","message":"Could not read JSON, error in line 1, column 2"}],"code":400,"message":"Could not read JSON, error in line 1, column 2"}

Пожалуйста помогите разобраться, не могу понять, что я не так делаю(
  • Вопрос задан
  • 315 просмотров
Решения вопроса 1
Anastasiya385
@Anastasiya385 Автор вопроса
Нашла ответ на свой вопрос) Невнимательность -_-
Ответ таков: в рамках второго запроса не отправлен HTTP-заголовок "Content-Type", что может приводить к указанной ситуации.
Т.е во втором запросе должен быть отправлен curl_setopt($curl2, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: OAuth $token"));
Вопрос закрываю)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы