HTTP GET Requests with cURL

Tutorial on how to use cURL to perform a simple GET request.

In some php tutorials, we already covered how to make HTTP Requests using file_get_contents and stream_get_contents – but if your host supports it, you might also be able to use cURL – not that it will matter which method you use, as long as it gets the job done in your situation.

The curl_init function initializes the request, usually assigning it to a variable – in this case $ch – we are going to use this when we add options to the request, such as whether we want the transfer/result returned directly, and the user agent string we want to use.

The curl_setopt function is used to set many different options – not to be covered in this tutorial.

The curl_exec function performs the request, with whatever options we have set. By default it should only return true or false – according to the manual – so we set the CURLOPT_RETURNTRANSFER option to true, in order to make it return the content instead of just true; it should still return false if something went wrong with the request.

Using CURL for HTTP Requests

Using CURL to make HTTP Requests is not much different than using file_get_contents, the principles are the same.

A working example script to perform a GET request is included below:

  // URL to fetch
  $url = "";

  // Initialize cURL session
  $ch = curl_init($url);

   // Option to Return the Result, rather than just true/false
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  // Perform the request, and save content to $result
  $result = curl_exec($ch);

  // Close the cURL resource, and free up system resources!

  // Shows the result!
  echo $result;

It can be a good idea to close – curl_close – the session if looping, unless you are going to overwrite the same session with a new one, or unless you are sure the script is done. In any case, all open sessions will be closed automatically when the script stops, so often it doesn't matter.

More cURL Tutorials

  1. HTTP Post Requests with cURL in PHP
  2. Request Headers
  3. Proxy Servers