Содержание
https://github.com/Garik-/http-request
Очень часто в коде можно встретить такие строки:
$result = file_get_contents("http://geocode-maps.yandex.ru/1.x/?geocode=".urlencode("Москва")); $handle = fopen("http://www.example.com/", "rb"); $result = fgets($handle);
- Не важно человеку, что директива allow_url_fopen может быть отключена на сервере.
- Не важно, что на сервере установлена библиотека cURL, которая без проблем скачает 100 МБ файл.
- Не важно, какой ответ вернет сервер, 200, 301, может 404, может 502?
- Не важно, то что сеть не идеальная среда и ответ может придти частично или его вовсе не будет продолжительное время. Скрипт попросту подвиснет в ожидании на неопределенное время или вернет не корректный результат.
try { $http = HttpRequest::get("http://geocode-maps.yandex.ru/1.x/?format=json",array("geocode"=>$city))->acceptJson(); $json = $http->ok() ? json_decode($http->body()) : null; } catch (HttpRequestException $e) { exit($e->getMessage()); }
Теперь это действительно не важно.
Библиотека Http Request основана на одноименной библиотеке Kevin Sawicki, которая должна быть хорошо известна Android разработчикам, ведь её использует сам GitHub в своем приложении.
Небольшие примеры
Отправка формы методом POST со своими заголовками
$http = HttpRequest::post("http://example.com/")->form( array( "param1" => "value", "param2" => "value", "file" => "@/home/vasya/attach.txt" )) ->header(HttpRequest::HEADER_USER_AGENT, "Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14912/812; U; ru)") ->header(HttpRequest::HEADER_REFERER,"http://google.com");
Отправка файла методом PUT
$http = HttpRequest::put("http://example.com/")->upload("/home/vasja/attach.txt");
Вывести все заголовки ответа сервера
print_r(HttpRequest::head("http://example.com")->headers());
Загрузка файла с сервера
$image=fopen('image.jpg','wb'); $loaded=HttpRequest::get("http://example.com/file.jpg")->receive($image)->ok(); // boolean
Библиотека включает в себя всего 3 файла, и может оказаться хорошей альтернативой монструозным фреймворкам для ваших собственных проектов.