JSON is the most popular data format for exchanging data between a browser and a server. The JSON data format is mostly used in web services to interchange data through API. When you working with web services and APIs, sending JSON data via POST request is the most required functionality. PHP cURL makes it easy to POST JSON data to URL. In this tutorial, we will show you how to POST JSON data using PHP cURL and get JSON data in PHP.
Send JSON data via POST with PHP cURL
The following example makes an HTTP POST request and send the JSON data to URL with cURL in PHP.
- Specify the URL
($url)
where the JSON data to be sent. - Initiate new cURL resource using
curl_init()
. - Setup data in PHP array and encode into a JSON string using
json_encode()
. - Attach JSON data to the POST fields using the
CURLOPT_POSTFIELDS
option. - Set the Content-Type of request to
application/json
using theCURLOPT_HTTPHEADER
option. - Return response as a string instead of outputting it using the
CURLOPT_RETURNTRANSFER
option. - Finally,
the curl_exec()
function is used to execute the POST request.
// API URL
$url = 'http://www.example.com/api';
// Create a new cURL resource
$ch = curl_init($url);
// Setup request to send json via POST
$data = [
'username' => 'saymon',
'password' => '123'
];
$payload = json_encode($data);
// Attach encoded JSON string to the POST fields
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
// Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
// Return response instead of outputting
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the POST request
$result = curl_exec($ch);
if($result === false) {
exit('Curl error: ' . curl_error($ch));
} else {
echo $result;
}
// Close cURL resource
curl_close($ch);
Receive JSON POST Data using PHP
The following example shows how you can get or fetch the JSON POST data using PHP.
- Use
json_decode()
function to decoded JSON data in PHP. - The
file_get_contents()
function is used to received data in a more readable format.
$data = json_decode(file_get_contents('php://input'), true);
I hope you enjoyed the read!
Feel free to follow me on GitHub, LinkedIn and DEV for more!
Top comments (0)