Open In App

How to Pass JSON Data in a URL using CURL in PHP ?

In this article, we will see how to pass the JSON Data in a URL using CURL in PHP, along with understanding the different ways for passing the data in a URL through the illustrations. The cURL stands for client URL, which allows us to connect with other URLs & use their responses in our code, i.e., it is a tool for sending and getting files using URL syntax. The cURL facilitates the way that can hit a URL from our code to get an HTML response from it. The cURL is also used in command lines or scripts for data transfer. Here, we need to pass JSON data in a URL using cURL in PHP and handle the POST request. This task can be accomplished with the help of the following ways:

We will explore all the above approaches & understand them through examples.



Syntax for passing JSON data in a URL using cURL:

<?php
    $url = "https://reqres.in/api/users";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    $resp = curl_exec($ch);
    curl_close($ch);
?>

Approach for POST Request:



Example 1: This example illustrates passing the JSON Data in a URL using cURL in PHP by using the cURL POST Request.




<?php
  //URL, Where the JSON data is going to be sent
  // sending post request to reqres.in
 
  //initialize CURL
  $ch = curl_init();
 
  //setup json data and using json_encode() encode it into JSON string
  $data = array(
    'Employee' => 'Aman',
    'Job' => 'Data Scientist',
    'Company' => '<b>GeeksForGeeks</b>'
    );
  $new_data = json_encode($data);
 
  //options for curl
  $array_options = array(
     
    //set the url option
    CURLOPT_URL=>$url,
     
    //switches the request type from get to post
    CURLOPT_POST=>true,
     
    //attach the encoded string in the post field using CURLOPT_POSTFIELDS
    CURLOPT_POSTFIELDS=>$new_data,
     
    //setting curl option RETURNTRANSFER to true
    //so that it returns the response
    //instead of outputting it
    CURLOPT_RETURNTRANSFER=>true,
     
    //Using the CURLOPT_HTTPHEADER set the Content-Type to application/json
    CURLOPT_HTTPHEADER=>array('Content-Type:application/json')
  );
 
  //setting multiple options using curl_setopt_array
  curl_setopt_array($ch,$array_options);
 
  // using curl_exec() is used to execute the POST request
  $resp = curl_exec($ch);
 
    //decode the response
    $final_decoded_data = json_decode($resp);
    foreach($final_decoded_data as $key => $val){
      echo $key . ': ' . $val . '<br>';
    }
 
  //close the cURL and load the page
  curl_close($ch);
?>

Output:

Employee: Aman
Job: Data Scientist
Company: GeeksForGeeks
id: 553
createdAt: 2022-12-02T12:32:42.420Z

Approach for GET Request:

Example 2: This example illustrates passing the JSON Data in a URL using cURL in PHP by using the cURL GET Request.




<?php
  //URL, Where the JSON data is going to be sent
  // sending get request to reqres.in
 
  //initialize CURL
  $ch = curl_init();
 
  //next we have to set options so below is the options for the curl
  $array_options = array(
     
    // $url is the variable we want to fetch using CURLOPT_URL
    CURLOPT_URL=>$url,
 
    //setting curl option RETURNTRANSFER to true so
    //that it returns the response
    //instead of outputting it
    CURLOPT_RETURNTRANSFER=>true,
  );
 
  //setting multiple options using curl_setopt_array
  curl_setopt_array($ch,$array_options);
 
  // using curl_exec() is used to execute the POST request
  $resp = curl_exec($ch);
 
  // decode the response
  $final_decoded_data = json_decode($resp,true);
    print_r($final_decoded_data);
 
  //close the cURL and load the page
  curl_close($ch);
?>

Output:

Array ( [page] => 2 [per_page] => 6 [total] => 12 [total_pages] => 2 [data] => 
Array ( [0] => Array ( [id] => 7 [email] => michael.lawson@reqres.in [first_name] => 
Michael [last_name] => Lawson [avatar] => https://reqres.in/img/faces/7-image.jpg ) 
[1] => Array ( [id] => 8 [email] => lindsay.ferguson@reqres.in [first_name] => 
Lindsay [last_name] => Ferguson [avatar] => https://reqres.in/img/faces/8-image.jpg ) 
[2] => Array ( [id] => 9 [email] => tobias.funke@reqres.in [first_name] => 
Tobias [last_name] => Funke [avatar] => https://reqres.in/img/faces/9-image.jpg ) 
[3] => Array ( [id] => 10 [email] => byron.fields@reqres.in [first_name] => Byron [last_name] => 
Fields [avatar] => https://reqres.in/img/faces/10-image.jpg ) 
[4] => Array ( [id] => 11 [email] => george.edwards@reqres.in [first_name] => George [last_name] => 
Edwards [avatar] => https://reqres.in/img/faces/11-image.jpg ) 
[5] =>Array ( [id] => 12 [email] => rachel.howell@reqres.in [first_name] => Rachel [last_name] => 
Howell [avatar] => https://reqres.in/img/faces/12-image.jpg ) ) [support] => 
Array ( [url] => https://reqres.in/#support-heading  => To keep ReqRes free, 
contributions towards server costs are appreciated! ) )

Approach for PUT Request:

Example 3: This example illustrates passing the JSON Data in a URL using cURL in PHP by using the cURL PUT Request.




<?php
  //URL, Where the JSON data is going to be sent
  // sending put request to reqres.in
 
  //initialize CURL
  $ch = curl_init();
 
  //setup json data and using json_encode() encode it into JSON string
  $data = array(
    'Employee' => 'Aman',
    'Job' => 'Data Scientist',
    'Company' => '<b>GeeksForGeeks</b>'
    );
  $new_data = json_encode($data);
 
  //next we have to set options so below is the options for the curl
  $array_options = array(
     
    //set the url option
    CURLOPT_URL=>$url,
 
    //attach the encoded string in the post field using CURLOPT_POSTFIELDS
    CURLOPT_POSTFIELDS=>$new_data,
 
    //setting curl option RETURNTRANSFER to true so
    //that it returns the response
    //instead of outputting it
    CURLOPT_RETURNTRANSFER=>true,
 
    //Using the CURLOPT_HTTPHEADER set the Content-Type to application/json
    CURLOPT_HTTPHEADER=>array('Content-Type:application/json')
  );
 
  //curl option for switching the request type from get to post
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'PUT');
 
  //setting multiple options using curl_setopt_array
  curl_setopt_array($ch,$array_options);
 
  // using curl_exec() is used to execute the POST request
  $resp = curl_exec($ch);
 
  // decode the response
  $decoded = json_decode($resp);
    foreach($decoded as $key => $val){
      echo $key . ': ' . $val . '<br>';
    }
 
  //close the cURL and load the page
  curl_close($ch);
?>

Output:

Employee: Aman
Job: Data Scientist
Company: GeeksForGeeks
updatedAt: 2022-12-02T12:34:59.262Z

Article Tags :