Curl library

tobekb edited this page Aug 29, 2012 · 28 revisions
Clone this wiki locally

Category:Libraries | Category:Libraries::Community | Category:Libraries::Connectivity

This library was made to make using cURL in CodeIgniter a little easier. It handles the following:


  • POST/GET/PUT/DELETE requests over HTTP
  • HTTP Authentication
  • Follows redirects
  • Returns error string
  • Provides debug information
  • Proxy support
  • Cookies




Simple calls

These do it all in one line of code to make life easy. They return the body of the page, or FALSE on fail.

// Simple call to remote URL
echo $this->curl->simple_get('');

// Simple call to CI URI
$this->curl->simple_post('controller/method', array('foo'=>'bar'));

// Set advanced options in simple calls
// Can use any of these flags

$this->curl->simple_get('', array(CURLOPT_PORT => 8080));
$this->curl->simple_post('', array('foo'=>'bar'), array(CURLOPT_BUFFERSIZE => 10));

Advanced calls

These methods allow you to build a more complex request.

// Start session (also wipes existing/previous sessions)

// Option & Options
$this->curl->option(CURLOPT_BUFFERSIZE, 10);
$this->curl->options(array(CURLOPT_BUFFERSIZE => 10));

// More human looking options
$this->curl->option('buffersize', 10);

// Login to HTTP user authentication
$this->curl->http_login('username', 'password');

// Post - If you do not use post, it will just run a GET request
$post = array('foo'=>'bar');

// Cookies - If you do not use post, it will just run a GET request
$vars = array('foo'=>'bar');

// Proxy - Request the page through a proxy server
// Port is optional, defaults to 80
$this->curl->proxy('', 1080);

// Proxy login
$this->curl->proxy_login('username', 'password');

// Execute - returns responce
echo $this->curl->execute();

// Debug data ------------------------------------------------

// Errors
$this->curl->error_code; // int

// Information
$this->curl->info; // array

Known errors

CURLOPT_TIMEOUT_MS does not work setting (due to an error in Curl.php, see line 268). Use CURLOPT_TIMEOUT instead.