How to send a POST Request with PHP ?
Last Updated :
28 Apr, 2025
In web development, sending POST requests is a common practice for interacting with servers and exchanging data. PHP, a versatile server-side scripting language, provides various approaches to accomplish this task. This article will explore different methods to send POST requests using PHP.
Using file_get_contents() and stream_context_create() Functions
This approach involves creating a stream context to configure the request and then using file_get_contents() function to perform the POST request. It is a basic method suitable for simple scenarios.
Example:
PHP
<?php
// Define the URL and data
$url = 'https://example.com/';
$data = ['key' => 'value'];
// Prepare POST data
$options = [
'http' => [
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($data),
],
];
// Create stream context
$context = stream_context_create($options);
// Perform POST request
$response = file_get_contents($url, false, $context);
// Display the response
echo $response;
?>
Here, define the target URL and the data to be sent. Create a stream context with the appropriate POST headers and data. Use file_get_contents with the created context to perform the POST request. Display the received response.
Output:

Leveraging the cURL Library
The cURL library is a powerful tool for making HTTP requests. PHP provides a curl_init() function to initialize a cURL session, allowing you to configure and execute POST requests with fine-grained control.
Example:
PHP
<?php
// Specify the URL and data
$url = 'https://example.com/';
$data = ['key' => 'value'];
// Initialize cURL session
$ch = curl_init();
// Set cURL options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute cURL session
$response = curl_exec($ch);
// Check for cURL errors
if ($response === false) {
die('Error occurred while fetching the data: '
. curl_error($ch));
}
// Close cURL session
curl_close($ch);
// Display the response
echo $response;
?>
Define the target URL and the data to be sent. Initialize a cURL session using curl_init() function. Set cURL options, including the POST method, POST data, and return transfer option. Execute the cURL session using curl_exec() function. Close the cURL session with curl_close() function. Display the received response.
Output:

Utilizing the HTTP_Request2 Class
For advanced scenarios, the HTTP_Request2 class from the PEAR package offers a convenient object-oriented approach. It provides features like handling redirects, cookies, and custom headers.
Example:
PHP
<?php
// Install PEAR's HTTP_Request2 package
// using Composer
// composer require pear/http_request2
// Include Composer autoload
require_once 'vendor/autoload.php';
// Specify the URL and data
$url = 'https://example.com/';
$data = ['key' => 'value'];
// Create HTTP_Request2 object
$request = new HTTP_Request2($url, HTTP_Request2::METHOD_GET);
$request->addPostParameter($data);
// Send the request and get the response
try {
$response = $request->send()->getBody();
// Display the response
echo $response;
} catch (HTTP_Request2_Exception $e) {
die('Error occurred while fetching the data: '
. $e->getMessage());
}
?>
Install the HTTP_Request2 package using Composer. Include the Composer autoload file. Define the target URL and the data to be sent. Create an HTTP_Request2 object with the POST method and parameters. Send the request using send() and retrieve the response with getBody() Function. Display the received response.
Output:

Similar Reads
How to Send an HTTP POST Request in JS? We are going to send an API HTTP POST request in JavaScript using fetch API. The FetchAPI is a built-in method that takes in one compulsory parameter: the endpoint (API URL). While the other parameters may not be necessary when making a GET request, they are very useful for the POST HTTP request. Th
2 min read
How to receive JSON POST with PHP ? In this article, we will see how to retrieve the JSON POST with PHP, & will also see their implementation through the examples. First, we will look for the below 3 features: php://input: This is a read-only stream that allows us to read raw data from the request body. It returns all the raw data
2 min read
How to Send WebSocket Requests with Postman ? This article will show how to send WebSocket requests in Postman. Postman is a popular collaborative platform for API development. It offers different tools for designing, debugging, and testing an API, making it more efficient. WebSocket is an advanced technology used for real-time bidirectional co
3 min read
How to create and send POST requests in Postman? Postman is an API(application programming interface) development tool which helps to build, test and modify APIs. It can make various types of HTTP requests(GET, POST, PUT, PATCH), saving environments for later use, and convert save the API to code for various languages(like JavaScript, and Python).
2 min read
How to create and send GET requests in Postman? Postman is an API(application programming interface) development tool which helps to build, test and modify APIs. It has the ability to make various types of HTTP requests(GET, POST, PUT, PATCH), saving environments for later use, converting the API to code for various languages(like JavaScript, Pyt
1 min read