Czytanie JSON POST przy użyciu PHP

Dużo się rozejrzałem przed wysłaniem tego pytania, więc przepraszam, jeśli jest to w innym poście i to jest tylko moje drugie pytanie tutaj, więc przepraszam, jeśli nie sformatuję poprawnie tego pytania.

Mam naprawdę prostą usługę internetową, którą stworzyłem, która musi przyjąć wartości postów i zwrócić tablicę kodowaną JSON. Wszystko działało dobrze, dopóki nie powiedziano mi, że będę musiał opublikować dane formularza z aplikacją typu content / json. Od tego czasu nie mogę zwracać żadnych wartości z usługi internetowej i jest to zdecydowanie coś wspólnego z tym, jak filtruję ich wartości postów.

Zasadniczo w mojej lokalnej konfiguracji utworzyłem stronę testową, która wykonuje następujące czynności -

$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);

W serwisie mam to (usunąłem niektóre funkcje) -

<?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);

?>

Zasadniczo wiem, że wynika to z braku wartości $ _POST, ale nie mogę znaleźć tego, co muszę umieścić zamiast $ _POST. Próbowałem json_decode ($ _ POST), file_get_contents („wejście php: //”) i wiele innych sposobów, ale trochę strzelałem w ciemności.

Każda pomoc byłaby bardzo mile widziana.

Dzięki, Steve

Dzięki Michael za pomoc, to był zdecydowany krok naprzód. Teraz mam przynajmniej repsonse, kiedy powtarzam post… nawet jeśli jest on zerowy

zaktualizowany 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));

zaktualizowałem php na stronie, na której publikowane są dane -

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

print_r(json_encode($input));

Tak jak mówię, widzę teraz odpowiedź, która poprzednio zwracała pustą stronę

questionAnswers(3)

yourAnswerToTheQuestion