Как стать автором
Обновить

HttpRequest — библиотека для простой работы с HTTP протоколом

Время на прочтение 2 мин
Количество просмотров 30K
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 файла, и может оказаться хорошей альтернативой монструозным фреймворкам для ваших собственных проектов.
Теги:
Хабы:
-2
Комментарии 12
Комментарии Комментарии 12

Публикации

Истории

Работа

PHP программист
175 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн