comodojo / httprequest
HTTP request library
Installs: 28 629
Dependents: 3
Suggesters: 0
Security: 0
Stars: 2
Watchers: 4
Forks: 2
Open Issues: 0
Requires
- php: >=5.3.0
- comodojo/exceptions: ^1.0
- league/url: ^3.0
Requires (Dev)
- phpunit/phpunit: ^4.0|^5.0
- scrutinizer/ocular: ^1.0
Suggests
- ext-curl: Make requests using curl instead of stream
README
HTTP request library
This is the development branch, please do not use it in production
Main features:
- BASIC, NTLM, DIGEST and SPNEGO auth (requires php curl library) authentication support
- proxy support
- allowed http methods: GET, POST, PUT, DELETE
- CURL or stream working mode
- request customization (useragent, http version, content type, ...)
Installation
Install composer, then:
composer require comodojo/httprequest
Basic usage
Library usage is trivial: first create an instance of Httprequest specifing remote host address, then use get
or send
method to start request. It's important to wrap code in a try/catch block to handle exceptions (if any).
Constructor accepts two parameters: remote host address (required) and a boolean value (optional) that, if false, will force lib to use streams instead of curl.
-
Using get:
try { // create an instance of Httprequest $http = new \Comodojo\Httprequest\Httprequest("www.example.com"); // or: // $http = new \Comodojo\Httprequest\Httprequest(); // $http->setHost("www.example.com"); // get remote data $result = $http->get(); } catch (\Comodojo\Exception\HttpException $he) { /* handle http specific exception */ } catch (\Exception $e) { /* handle generic exception */ }
-
Using send:
$data = array('foo'=>'bar', 'baz'=>'boom'); try { // create an instance of Httprequest $http = new \Comodojo\Httprequest\Httprequest("www.example.com"); // get remote data $result = $http->setHttpMethod("POST")->send($data); } catch (\Comodojo\Exception\HttpException $he) { /* handle http specific exception */ } catch (\Exception $e) { /* handle generic exception */ }
Class setters (chainable methods)
-
Set destination port (default 80)
$http->setPort(8080);
-
Set timeout (in secs)
$http->setTimeout(10);
-
Set a custom user agent (default to 'Comodojo-Httprequest')
$http->setUserAgent("My-Custom-User-Agent");
-
Set HTTP version (1.0 or 1.1)
$http->setHttpVersion("1.1");
-
Set content type (default to 'application/x-www-form-urlencoded' and used only with
send
method)$http->setContentType("multipart/form-data");
-
Set additional/custom headers:
$http->setHeader("My-Header","foo");
-
Set authentication:
// NTLM $http->setAuth("NTLM", "myusername", "mypassword"); // BASIC $http->setAuth("BASIC", "myusername", "mypassword");
-
Set proxy:
// No authentication $http->setProxy(proxy.example.org); // Authentication $http->setProxy(proxy.example.org, "myusername", "mypassword");
-
Ignore errors (stream only):
Force the stream to ignore errors and to return http code and content from the server instead of throwing an exception.
// Set the stream to ignore errors $http->setIgnoreErrors(true);
Class getters
-
Get response headers:
// After a request... $headers = $http->getReceivedHeaders();
-
Get HTTP received status code:
// After a request... $code = $http->getHttpStatusCode();
Multiple requests
The reset
method helps resetting options and data channel; for example:
try { // create an instance of Httprequest $http = new \Comodojo\Httprequest\Httprequest(); // first request $first_data = $http->setHost("www.example.com")->get(); // channel reset $http->reset(); // second request $second_data = $http->setHost("www.example2.com")->setHttpMethod("POST")->send(array("my"=>"data")); } catch (\Comodojo\Exception\HttpException $he) { /* handle http specific exception */ } catch (\Exception $e) { /* handle generic exception */ }
Documentation
Contributing
Contributions are welcome and will be fully credited. Please see CONTRIBUTING for details.
License
comodojo/httprequest
is released under the MIT License (MIT). Please see License File for more information.