Чтение JSON POST с использованием PHP

Я много осматривался, прежде чем опубликовать этот вопрос, поэтому я извиняюсь, если он есть в другом посте, и это только мой второй вопрос, поэтому извиняюсь, если я не отформатировал этот вопрос правильно.

У меня есть действительно простой веб-сервис, который я создал, который должен принимать значения записей и возвращать JSON-кодированный массив. Это все работало нормально, пока мне не сказали, что мне нужно будет опубликовать данные формы с типом контента application / json. С тех пор я не могу возвращать какие-либо значения из веб-службы, и это определенно связано с тем, как я фильтрую их значения.

В основном в моей локальной настройке я создал тестовую страницу, которая выполняет следующее:

$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                                                                  
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data))                                                                       
);
curl_setopt($curl, CURLOPT_URL, 'http://webservice.local/');  // Set the url path we want to call
$result = curl_exec($curl);

//see the results
$json=json_decode($result,true);
curl_close($curl);
print_r($json);

На веб-сервисе у меня есть это (я лишил некоторые функции) -

<?php

header('Content-type: application/json');

/* connect to the db */
$link = mysql_connect('localhost','root','root') or die('Cannot connect to the DB');
mysql_select_db('webservice',$link) or die('Cannot select the DB');

if(isset($_POST['action']) && $_POST['action'] == 'login') {
    $statusCode = array('statusCode'=>1, 'statusDescription'=>'Login Process - Fail');
    $posts[] = array('status'=>$statusCode);
    header('Content-type: application/json');
    echo json_encode($posts);

    /* disconnect from the db */
}
@mysql_close($link);

?>

В основном я знаю, что это происходит из-за того, что значения $ _POST не установлены, но я не могу найти то, что мне нужно поместить вместо $ _POST. Я пробовал json_decode ($ _ POST), file_get_contents ("php: // input") и ряд других способов, но я немного снимал в темноте.

Любая помощь будет принята с благодарностью.

Спасибо Стив

Спасибо Майклу за помощь, это был определенный шаг вперед. Теперь я, по крайней мере, получил ответ, когда повторяю сообщение .... даже если оно пустое

обновленный CURL -

  $curl = curl_init();
  curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
  curl_setopt($curl, CURLOPT_URL, 'http://webservice.local/');  
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

обновленный php на странице, на которой размещены данные -

$inputJSON = file_get_contents('php://input');
$input= json_decode( $inputJSON, TRUE ); //convert JSON into array

print_r(json_encode($input));

Как я уже сказал, по крайней мере, я вижу ответ сейчас, когда он возвращал пустую страницу

Ответы на вопрос(3)

Ваш ответ на вопрос