Рассмотрим как отправить простой HTTP GET-запрос с помощью PHP. Для отправки GET-запросов с помощью PHP существует два разных способа.
file_get_contents
Первый метод предполагает использование функции file_get_contents. Эта простая в использовании функция присутствует в PHP с версии 4.3.0 и предназначена для «чтения всего файла в строку».
В этом случае, указанный файл является URL, к которому мы получим доступ через GET. Взгляните на следующий пример кода:
// URL для GET запроса
$url = 'http://google.com';
// использовать file_get_contents для GET запроса к URL
$contents = file_get_contents($url);
// если $contents не FALSE
if($contents !== false){
// вывести содержимое
echo $contents;
}
При указании URL-адреса, file_get_contents
получит содержимое URL-адреса с помощью HTTP GET-запроса.
Если вам нужно добавить параметры запроса / GET, то вы можете просто добавить их в конец URL подобным образом:
// URL с дополнительными параметрами запроса
$url = 'http://google.com?id=1&name=wayne';
// также используем file_get_contents для GET запроса к URL
$contents = file_get_contents($url);
// если $contents не булевое FALSE
if($contents !== false){
// выводим contents
echo $contents;
}
В коде выше я добавил строковые id и name параметры запроса.
К сожалению, недостаток использования file_get_contents заключается в том, что вы не можете получить HTTP-коды ответа, а обработка ошибок является крайне простой.
cURL
Для получения кодов ответа HTTP и другой информации о заголовках можно использовать библиотеку cURL. По умолчанию cURL использует GET-запросы:
// инициализируем cURL
$ch = curl_init();
// установите URL, который вы хотите получить с помощью опции CURLOPT_URL
curl_setopt($ch, CURLOPT_URL, 'http://google.com');
// установите CURLOPT_RETURNTRANSFER так, чтобы содержимое возвращалось в качестве переменной
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// установите значение CURLOPT_FOLLOWLOCATION в true, чтобы следовать перенаправлению.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// выполняем запрос
$data = curl_exec($ch);
// закрываем обработчик cURL
curl_close($ch);
// вывести данные на страницу
echo $data;
В приведенном выше коде, мы:
- Инициализировали cURL с помощью функции curl_init.
- Мы устанавливаем URL, который хотим получить (GET) с помощью параметра CURLOPT_URL.
- Мы установили опцию CURLOPT_RETURNTRANSFER в true, чтобы содержимое URL не выводилось на страницу автоматически (вместо этого оно возвращается в виде строки функцией curl_exec).
- Мы устанавливаем опцию CURLOPT_FOLLOWLOCATION в true, потому что мы хотим следовать любым редиректам, которыми сайт говорит нам следовать. Если вы хотите игнорировать перенаправление заголовков, то просто удалите соответствующую строку или установите опцию в false.
- Мы выполнили GET-запрос с помощью curl_exec.
- Мы закрыли обработчик CURL-ручки.
- Наконец, мы вывели на печать содержимое URL-адреса на страницу.
cURL является лучшим вариантом для использования, если вы хотите больше контроля над вашими HTTP-запросами.
Он не только имеет лучшую обработку ошибок, но и позволяет использовать куки, устанавливать информацию о реферерах, настраивать пользовательские user agents и т.д.