Skip to main content

PHP CURL The Basics of making calls

PHP CURL The Basics

Getting started;

Before getting started with curl and php we must ensure that we have the extension installed.

package name on linux is php-curl;

Now we can use php-curl in our php code, like this for a simple GET call;

<?php // URL requested $url = 'http://www.yourdomain.com/endpoint'; // Initializing curl request $ch = curl_init( $url ); // Configuring curl options $options = array( CURLOPT_RETURNTRANSFER => true ); // Setting curl options curl_setopt_array( $ch, $options ); // Getting results by executing the curl request. $result = curl_exec($ch); // dump the content var_dump($result);

Posting to an endpoint using php-curl

There are situations where you may need to post some type of data into an endpoint which may or maynot be protected by authentication, here is a simple example that cover this situation.

<?php // JSON URL requested $json_url = ‘http://www.yourdomain.com/json_script.json’; // Initializing curl request $ch = curl_init( $json_url ); // Configuring curl options $options = array( CURLOPT_RETURNTRANSFER => true, // authentication CURLOPT_USERPWD => $username . “:” . $password, // setting the headers for the data to be posted to json CURLOPT_HTTPHEADER => array(‘Content-type: application/json’) , CURLOPT_POSTFIELDS => $json_string ); // Setting curl options curl_setopt_array( $ch, $options ); // Executing the request and get the response to result // Getting JSON result as string $result = curl_exec($ch); // converting the json response to type array $responseArray = json_decode($result, true);

Uploading file using curl

<?php $curl = curl_init(); $data = file_get_contents('test.png'); curl_setopt_array($curl, array( CURLOPT_URL => "http://woo.dev/wp-json/wp/v2/media", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => array( "authorization: Basic XxxxxxxXxxxxXx=", "cache-control: no-cache", "content-disposition: attachment; filename=test.png", "content-type: image/png", ), CURLOPT_POSTFIELDS => $data, )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }

Comments