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

Last Updated: 03-Feb-2023 18:37:13
112 Views
Summarize

Git is a distributed version control system DVCS designed for efficient source code management, suitable for both small and large projects. It allows multiple developers to work on a project simultaneously without overwriting changes, supporting collaborative work, continuous integration, and deployment. This Git and GitHub tutorial is designed for beginners to learn fundamentals and advanced concepts, including branching, pushing, merging conflicts, and essential Git commands. Prerequisites include familiarity with the command line interface CLI, a text editor, and basic programming concepts. Git was developed by Linus Torvalds for Linux kernel development and tracks changes, manages versions, and enables collaboration among developers. It provides a complete backup of project history in a repository. GitHub is a hosting service for Git repositories, facilitating project access, collaboration, and version control. The tutorial covers topics such as Git installation, repository creation, Git Bash usage, managing branches, resolving conflicts, and working with platforms like Bitbucket and GitHub. The text is a comprehensive guide to using Git and GitHub, covering a wide range of topics. It includes instructions on working directories, using submodules, writing good commit messages, deleting local repositories, and understanding Git workflows like Git Flow versus GitHub Flow. There are sections on packfiles, garbage collection, and the differences between concepts like HEAD, working tree, and index. Installation instructions for Git across various platforms Ubuntu, macOS, Windows, Raspberry Pi, Termux, etc. are provided, along with credential setup. The guide explains essential Git commands, their usage, and advanced topics like debugging, merging, rebasing, patch operations, hooks, subtree, filtering commit history, and handling merge conflicts. It also covers managing branches, syncing forks, searching errors, and differences between various Git operations e.g., push origin vs. push origin master, merging vs. rebasing. The text provides a comprehensive guide on using Git and GitHub. It covers creating repositories, adding code of conduct, forking and cloning projects, and adding various media files to a repository. The text explains how to push projects, handle authentication issues, solve common Git problems, and manage repositories. It discusses using different IDEs like VSCode, Android Studio, and PyCharm, for Git operations, including creating branches and pull requests. Additionally, it details deploying applications to platforms like Heroku and Firebase, publishing static websites on GitHub Pages, and collaborating on GitHub. Other topics include the use of Git with R and Eclipse, configuring OAuth apps, generating personal access tokens, and setting up GitLab repositories. The text covers various topics related to Git, GitHub, and other version control systems Key Pointers Git is a distributed version control system DVCS for source code management. Supports collaboration, continuous integration, and deployment. Suitable for both small and large projects. Developed by Linus Torvalds for Linux kernel development. Tracks changes, manages versions, and provides complete project history. GitHub is a hosting service for Git repositories. Tutorial covers Git and GitHub fundamentals and advanced concepts. Includes instructions on installation, repository creation, and Git Bash usage. Explains managing branches, resolving conflicts, and using platforms like Bitbucket and GitHub. Covers working directories, submodules, commit messages, and Git workflows. Details packfiles, garbage collection, and Git concepts HEAD, working tree, index. Provides Git installation instructions for various platforms. Explains essential Git commands and advanced topics debugging, merging, rebasing. Covers branch management, syncing forks, and differences between Git operations. Discusses using different IDEs for Git operations and deploying applications. Details using Git with R, Eclipse, and setting up GitLab repositories. Explains CI/CD processes and using GitHub Actions. Covers internal workings of Git and its decentralized model. Highlights differences between Git version control system and GitHub hosting platform.

2 trials left

In this tutorial, 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);
?>


1. 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
  //URL, Where the JSON data is going to be sent
  // sending post request to reqres.in
  $url = "https://reqres.in/api/users";
  
  //initialize CURL
  $ch = curl_init();
  
  //setup json data and using json_encode() encode it into JSON string
  $data = array(
    'Employee' => 'Prathmesh',
    'Job' => 'Data Scientist',
    'Company' => '<b>Codegyan</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  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: Prathmesh
Job: Data Scientist
Company: Codegyan
id: 598
createdAt: 2023-02-03T12:32:42.420Z

2. 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
  //URL, Where the JSON data is going to be sent
  // sending get request to reqres.in
  $url = "https://reqres.in/api/users?page=2";
  
  //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  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! ) )

3. 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
  //URL, Where the JSON data is going to be sent
  // sending put request to reqres.in
  $url = "https://reqres.in/api/users/2";
  
  //initialize CURL
  $ch = curl_init();
  
  //setup json data and using json_encode() encode it into JSON string
  $data = array(
    'Employee' => 'Prathmesh',
    'Job' => 'Data Scientist',
    'Company' => '<b>Codegyan</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  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: Prathmesh
Job: Data Scientist
Company: Codegyan
updatedAt: 2023-02-03T12:34:59.262Z

You may also like this!