cURL + POST + JSON

imag777

Новичок
Доброго дня!
Необходимо отправить данные в формате JSON из файла А в файл Б, используя cURL, методом POST .
Тестовые данные (Файл А):
PHP:
   $arr[0]['data_type'] = '1';
   $arr[0]['data_content'] = 'some string';
   $arr[1]['data_type'] = '2';
   $arr[1]['data_content'] = 'some string2';
Кодируем:
PHP:
$data = json_encode($arr);
Инициализируем cURL и отправляем в файл Б наши данные:
PHP:
$url = <Путь к файлу Б>;
$ch = curl_init($url);                                                                     
   curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); 
   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);                                                                  
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
                                                                      
 
    $result = curl_exec($ch);
    var_dump($result);
Содержимое файла Б:
PHP:
//Проверка:
var_dump($_POST);
Результат:
"array(0) { }"

Однако, если данные передавать как элемент ассоциативного массива (естественно, убрав из cURL Content-Type: application/json), например, то всё ок:
PHP:
$data = array("data" => $data);                                                                
// Отправка
Вопрос: каким способом (в моём случае) можно передать данные не в виде элемента ассоциативного массива, а "чистым" json-ом? Или я на стороне приёма обрабатываю неправильно?

Спасибо откликнувшимся.
 

С.

Продвинутый новичок
"чистым" json это просто строка текста, поэтому и передавать ее надо как "сырые" данные, а не пытаться выдавать за массив CURLOPT_POSTFIELDS. И на приемной стороне соответственно тоже получать их в "сыром" виде.
 

imag777

Новичок
флоппик, спасибо большое, помогло! решение как и в большинстве случаев, тривиальное, если за спиной есть хороший багаж знаний, то решается быстро. сам бы думал еще неопределённый срок.
закрыто.
 
Сверху