How to send JSON string via POST in PHP
Some modern web services and APIs that requires API consumers to send JSON via a POST request. Here’s how you would program to do such task.
//API Url
$url = 'http://apiprovider.com/api/v1/authentication/create';
//Initiate cURL.
$ch = curl_init($url);
//This array will be encoded to JSON data before sending.
$jsonData = array(
'username' => 'SomeUsername',
'password' => 'SomePassword'
);
//Encode the array to JSON.
$jsonDataEncoded = json_encode($jsonData);
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
//Execute the request
$result = curl_exec($ch);
Once we’ve got the response from the API Provider, we can decode the JSON back to an array using json_decode() function, so that PHP can process or display to client easily.