The CURLRequest class that comes pre-installed in Codeigniter 4 makes it easy to send cURL request from the application.
It allows you to make requests via GET, POST, PUT, and other methods on various endpoints.
With this blog post, you will be able to understand about sending cURL GET and POST request using CURLRequest Class in CodeIgniter 4 and implement it in your project.
Table of Content
- Create API
- Sending cURL GET Requests in CodeIgniter 4
- Sending cURL POST Requests in CodeIgniter 4
- Sending Headers with cURL POST Requests in CodeIgniter 4
- Conclusion
1. Create API
Create api.php
file to handle cURL GET and POST requests and return response.
If $request == 1
means it is GET request then assign first_name, last_name, and email in $response
Array and return it in JSON format.
If $request == 2
means it is POST request then read POST data and assign to the $response
Array and return it in JSON format.
<?php $request = 0; if(isset($_GET['request'])){ $request = $_GET['request']; } // GET request if($request == 1){ $response = array(); $response['first_name'] = 'Arjun'; $response['last_name'] = 'singh'; $response['email'] = 'arjun@makitweb.com'; echo json_encode($response); die; } // POST request if($request == 2){ // Read POST data $data = json_decode(file_get_contents("php://input")); $first_name = $data->first_name; $last_name = $data->last_name; $email = $data->email; $response['first_name'] = $first_name; $response['last_name'] = $last_name; $response['email'] = $email; echo json_encode($response); die; }
2. Sending cURL GET Requests in CodeIgniter 4
Open your controller where you want to write a cURL request.
Assign API request URL to $apiURL
and create an instance of Service class – \Config\Services::curlrequest()
and assign to $client
.
Send Request –
To send a GET request call get()
method and pass 2 parameters –
$apiURL
- An Array that contains
'debug' => true
. This will write an error in the server error log.
Read Response –
The cURL request will return Response
object using this read response data –
- statuscode – $response->getStatusCode()
- reason – $response->getReason()
- body – $response->getBody()
If statuscode
is 200 (indicating success), proceed to read the body data. I am using json_decode()
because from api.php
returning JSON response. If you are not returning a JSON response then remove it.
After decoding read values and assign them to the variable. Print the variable values.
<?php namespace App\Controllers; class PageController extends BaseController{ // cURL GET request public function getrequest(){ $apiURL = 'http://localhost/apis/api.php?request=1'; // Instance $client = \Config\Services::curlrequest(); // Send request $response = $client->get($apiURL,['debug' => true]); // Read response $code = $response->getStatusCode(); $reason = $response->getReason(); // OK if($code == 200){ // Success // Read data $body = json_decode($response->getBody()); $first_name = $body->first_name; $last_name = $body->last_name; $email = $body->email; echo "first_name : ".$first_name."<br>"; echo "last_name : ".$last_name."<br>"; echo "email : ".$email."<br>"; }else{ echo "failed"; die; } } }
3. Sending cURL POST Requests in CodeIgniter 4
Assign the request URL to $apiURL
and create an instance of the Service class.
Send Request –
In postData
Array specify data that need to send from the cURL request.
To send POST request call post()
method where pass 2 parameters –
$apiURL
, and- An Array that contains
['debug' => true,'json' => $postData]
– Pass$postData
in’json'
key.
Read response –
Just like in the GET request section, extract details from the response using the getStatusCode()
and getReason()
methods. These reveal the status code and reason for the response.
<?php namespace App\Controllers; class PageController extends BaseController{ // cURL POST request public function postrequest(){ $apiURL = 'http://localhost/apis/api.php?request=2'; $client = \Config\Services::curlrequest(); $postData = array( 'first_name' => "Yogesh", 'last_name' => "singh", 'email' => "yogesh@makitweb.com", ); // Send request $response = $client->post($apiURL,['debug' => true,'json' => $postData]); // Read response $code = $response->getStatusCode(); $reason = $response->getReason(); if($code == 200){ // Success // Read data $body = json_decode($response->getBody()); $first_name = $body->first_name; $last_name = $body->last_name; $email = $body->email; echo "first_name : ".$first_name."<br>"; echo "last_name : ".$last_name."<br>"; echo "email : ".$email."<br>"; }else{ echo "failed"; die; } } }
4. Sending Headers with cURL POST Requests in CodeIgniter 4
I am sending the Header with a POST request.
Specified 2 headers in $headerData
Array. While sending POST request specified headers in the 2 parameters –
'headers'=>$headerData,
Example:
public function postrequest(){ $apiURL = 'http://localhost/codeigniter4/api.php?request=2'; $client = \Config\Services::curlrequest(); $postData = array( 'first_name' => "Anil", 'last_name' => "sharma", 'email' => "anil@makitweb.com", ); // Header data $headerData = array( 'Content-Type' => 'application/json', 'Accept' => 'application/json', ); // Send request $response = $client->post($apiURL,[ 'debug' => true, 'headers'=>$headerData, 'json' => $postData ]); // Read response $code = $response->getStatusCode(); $reason = $response->getReason(); if($code == 200){ // Success // Read data $body = json_decode($response->getBody()); $first_name = $body->first_name; $last_name = $body->last_name; $email = $body->email; echo "first_name : ".$first_name."<br>"; echo "last_name : ".$last_name."<br>"; echo "email : ".$email."<br>"; }else{ echo "failed"; die; } }
5. Conclusion
Using the examples, you can easily implement cURL request in your project. If cURL not sending then check if the cURL library is enabled or not in the server. If not then enable it otherwise use the error log to debug it.
Follow this link if you want to learn more about CURLRequest Class.
If you found this tutorial helpful then don't forget to share.