У вас есть пустой $_POST
. Если ваш веб-сервер хочет видеть данные в json-формате, вам нужно прочитать исходный ввод, а затем проанализировать его с помощью декодирования JSON.
Вам нужно что-то вроде этого:
$json = file_get_contents('php://input');
$obj = json_decode($json);
Также у вас неправильный код для тестирования JSON-связи ...
CURLOPT_POSTFIELDS
сообщает curl
, чтобы кодировать ваши параметры как application/x-www-form-urlencoded
. Вам нужна JSON-строка.
UPDATE
Ваш php-код для тестовой страницы должен быть таким:
$data_string = json_encode($data);
$ch = curl_init('http://webservice.local/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
$result = json_decode($result);
var_dump($result);
Также на странице вашего веб-сервиса вы должны удалить одну из строк header('Content-type: application/json');
. Его нужно вызывать только один раз.