Current Interests

Right now I am working with two great PHP frameworks for two different application: Zend Framework and Orchid. Although I'm a huge fan of CodeIgniter, I'm finding ZF to be robust and really solid for becoming the #1 choice of enterprises very soon.

In addition to them, I am also having a good look on Dojo - as it became Zend Framework's official JavaScript toolkit. I have to agree that there a few gems in it which I like, but I'm yet to discover its full potential. In the meantime, jQuery is helping me a lot.

Latest reading

powered by LibraryThing
 
Jan
20

HTTP Class for PHP (supports both cURL and fsockopen)

Comments   Trackback 
1 Star2 Stars3 Stars4 Stars5 Stars (13 votes, average: 4.54 out of 5)
Loading ... Loading ...

This is a wrapper HTTP class that uses either cURL or fsockopen to harvest resources from the web. It supports a handy subset of functionalists of HTTP that are mostly needed in day to day coding. Scripts who need to communicate with other servers will find it useful. If you’re looking to invoke any RESTful API and don’t want to bother adding a bunch of libraries for that simple thing, just put this class and you’re set.

Detailed documentation can be found here. And you can download the source from here.

UPDATE: Class added in Orchid - “PHP framwork for the rest of us”

Features

  • Can use both cURL and fsockopen.
  • Degrades to fsockopen if cURL not enabled.
  • Supports HTTP Basic authentication.
  • Supports defining custom request headers.
  • Supports defining connection timeout values.
  • Supports defining user agent and referral values.
  • Supports both user-defined and persistent cookies.
  • Supports secure connections (HTTPS) with and without cURL.
  • Supports adding requests parameters for both GET and POST.
  • Supports automatic redirection (maximum redirect can be defined).
  • Returns HTTP response headers and response body data separately.

Example 1 - Simple Get (Facebook Application List)

   1: <?php
   2:  
   3: include_once('class.http.php');
   4:  
   5: $http = new Http();
   6:  
   7: $http->execute('http://www.facebook.com/apps/index.php?sort=6');
   8: echo ($http->error) ? $http->error : $http->result;
   9:  
  10: ?>

Example 2 - Invoking Yahoo Term Extraction API

   1: <?php
   2:  
   3: include_once('class.http.php');
   4:  
   5: $http = new Http();
   6:  
   7: $http->addParam('appid'   , 'a_really_random_yahoo_app_id');
   8: $http->addParam('context' , 'I am happy because I bought a new car');
   9: $http->addParam('output'  , 'xml');
  10:                         
  11: $http->execute('http://search.yahooapis.com/ContentAnalysisService/V1/termExtraction');
  12: echo ($http->error) ? $http->error : $http->result;
  13:  
  14: ?>

Example 3 - Logging into Basecamp (without using cURL!)

   1: <?php
   2:  
   3: include_once('class.http.php');
   4:  
   5: $http = new Http();
   6:  
   7: $http->useCurl(false);
   8: $http->setMethod('POST');
   9:  
  10: $http->addParam('user_name', 'emran');
  11: $http->addParam('password', 'hasan');
  12:  
  13: $http->setReferrer('https://someproject.projectpath.com/login');
  14: $http->execute('https://someproject.projectpath.com/login/authenticate');
  15:  
  16: echo ($http->error) ? $http->error : $http->result;
  17:  
  18: ?>

Example 4 - Getting a protected feed

   1: <?php
   2:  
   3: include_once('class.http.php');
   4:  
   5: $http = new Http();
   6: $http->setAuth('emran', 'hasan');
   7:  
   8: $http->execute('http://www.someblog.com/protected/feed.xml');
   9: echo ($http->error) ? $http->error : $http->result;
  10:  
  11: ?>

Download

class.http.php
HTTP Class for PHP (supports both cURL and fsockopen)
Downloaded: 2085 times