HTTP Class for PHP (supports both cURL and fsockopen)
Feb 2009: A couple bugs have been fixed and library updated.
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.
Download
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<?php2 3include_once('class.http.php');4 5$http = new Http();6 7$http->execute('http://www.facebook.com/apps/index.php?sort=6');8echo ($http->error) ? $http->error : $http->result;
Example 2 – Invoking Yahoo Term Extraction API
1<?php 2 3include_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');12echo ($http->error) ? $http->error : $http->result;
Example 3 – Logging into Basecamp (without using cURL!)
1<?php 2 3include_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 16echo ($http->error) ? $http->error : $http->result;
Example 4 – Getting a protected feed
1<?php2 3include_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');9echo ($http->error) ? $http->error : $http->result;