Milind Daraniya

PHP cURL POST Request with Headers: A Practical Guide

Published October 1st, 2023 18 min read

In web development, sending HTTP requests, particularly POST requests, is a common task when interacting with APIs or submitting data to servers. PHP's cURL library is a powerful tool that allows you to perform various types of HTTP requests, including POST, with custom headers. In this tutorial, we'll walk you through an example of making a cURL POST request with headers using PHP.

Step 1: Initialize cURL

To get started, ensure that the cURL extension is enabled in your PHP installation. You can create a new PHP file for this example, such as curl_post_example.php, and begin by initializing cURL:

$ch = curl_init();

Step 2: Set Request URL

Specify the target URL to which you want to send the POST request:

$url = 'https://api.example.com/endpoint';
curl_setopt($ch, CURLOPT_URL, $url);

Step 3: Set POST Data

If your request requires POST data, you can set it using the CURLOPT_POSTFIELDS option:

$data = [
    'key1' => 'value1',
    'key2' => 'value2',
];
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

Step 4: Set Request Headers

To include custom headers in your request, use the CURLOPT_HTTPHEADER option:

$headers = [
    'Authorization: Bearer your_access_token',
    'Content-Type: application/x-www-form-urlencoded',
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Step 5: Receive Response

Set the CURLOPT_RETURNTRANSFER option to true to capture the response:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

Step 6: Handle Errors and Clean Up

Check for cURL errors and close the cURL session:

if (curl_errno($ch)) {
    echo 'cURL Error: ' . curl_error($ch);
} else {
    // Process the response
    echo $response;
}

curl_close($ch);

Step 7: Execute the Request

Finally, execute the cURL request by running your PHP script:

php curl_post_example.php

Making a cURL POST request with custom headers using PHP allows you to interact with APIs and external services seamlessly. Whether you're sending data, authenticating with tokens, or setting content types, cURL provides the flexibility to customize your requests according to your application's needs. This example serves as a starting point for incorporating cURL requests into your web development projects, enabling efficient communication between your PHP application and various endpoints.