Open In App

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

Last Updated : 29 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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:

  • cURL POST Request
  • cURL GET Request
  • cURL PUT Request

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);
?>
  • By using the cURL POST Request

Approach for POST Request:

  • We need to specify the URL, where the JSON data need to be sent.
  • Using curl_init(), we initialize cURL.
  • Put JSON data in a PHP array and set up JSON data.
  • And using json_encode() encode it into JSON string.
  • Setting the options for the cURL.
    • Fetching $url using CURLOPT_URL.
    • Switching request type from get to post using CURLOPT_POST.
    • Now attach the encoded string in the post field using CURLOPT_POSTFIELDS.
    • Setting the curl option RETURNTRANSFER to true so that it returns the response instead of just outputting it.
    • Using the CURLOPT_HTTPHEADER set the Content-Type to application/JSON.
  • Setting multiple options for a cURL session. Using the curl_setopt_array() function, setting a large number of options for cURL without repetitively calling it.
  • Using curl_exec() to execute the POST request.
  • Decode the response and Return the response as a string.
  • Close the cURL.

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

PHP




<?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
  • By using cURL GET Request

Approach for GET Request:

  • We need to specify the URL, Where the JSON data is going to be sent.
  • Using curl_init() we initialize cURL.
  • Next, we have to set options for the cURL.
  • Fetching $url using CURLOPT_URL.
  • Setting the curl option RETURNTRANSFER to true so that it returns the response instead of just outputting it.
  • Setting multiple options for a cURL session. Using the curl_setopt_array() function, setting a large number of options for cURL without repetitively calling it.
  • Using curl_exec() to execute the GET request.
  • Decode the response and Return the response as a string.
  • Close the cURL.

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

PHP




<?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! ) )
  • By using cURL PUT Request

Approach for PUT Request:

  • We need to specify the URL, where the JSON data need to be sent.
  • Using curl_init(), we initialize cURL.
  • Put JSON data in a PHP array and set up JSON data.
  • And using json_encode() encode it into JSON string.
  • Setting the options for the cURL.
    • Fetching $url using CURLOPT_URL.
    • Now attach the encoded string in the post field using CURLOPT_POSTFIELDS.
    • Setting the curl option RETURNTRANSFER to true so that it returns the response instead of just outputting it.
    • Using the CURLOPT_HTTPHEADER set the Content-Type to application/JSON.
  • Instead of using CURLOPT_POST, we use here CURLOPT_CUSTOMREQUEST for specifying the PUT request.
  • Setting multiple options for a cURL session. Using the curl_setopt_array() function, setting a large number of options for cURL without repetitively calling it.
  • Using curl_exec() to execute the PUT request.
  • Decode the response and Return the response as a string.
  • Close the curl.

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

PHP




<?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


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads