Автор оригинала: David Wong.
PHP curl-это очень мощная библиотека с открытым исходным кодом. Он поддерживает множество протоколов, включая HTTP, FTP, Telnet и т.д. мы используем его для отправки HTTP-запросов. Преимущество, которое это дает нам, заключается в том, что мы можем устанавливать различные параметры протокола HTTP с помощью гибких опций и поддерживать HTTPS. Curl может автоматически выбирать, следует ли шифровать отправляемый контент, основываясь на том, является ли префикс URL “HTTP” или “HTTPS”.
Основной процесс отправки запросов с помощью curl
Использование PHP-расширения curl для отправки HTTP-запроса обычно включает следующие шаги:
- 1. Инициализируйте дескриптор подключения;
- 2. Установите опцию скручивания;
- 3. Выполняйте и получайте результаты;
- 4. Отпустите ручку соединения завитков.
Следующий фрагмент программы представляет собой типичный процесс отправки HTTP с использованием curl
//1. Initialization
$ch = curl_init();
//2. Set options, including URL
curl_setopt($ch,CURLOPT_URL,"http://www.codetc.com");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
//3. Execute and get HTML document content
$output = curl_exec($ch);
if($output === FALSE ){
echo "CURL Error:".curl_error($ch);
}
//4. Release curl handle
curl_close($ch);В приведенном выше коде используются четыре функции
curl_init() и curl_close() Инициализировать и закрыть соединение curl относительно просто.
curl_exec() Выполнить запрос curl. Если ошибка не возникает, функция возвращает данные, возвращаемые с соответствующего URL-адреса, который выражается в виде строки. Если возникает ошибка, функция возвращает значение false. Следует отметить, что если вывод ложен, полный знак используется для различения возврата пустой строки и ошибки.
Наиболее важной функцией в библиотеке curl является curl_setopt() Он может настраивать HTTP-запросы, устанавливая параметры, определенные библиотекой функций curl. В приведенном выше фрагменте кода используются три важных параметра:
- URL-адрес CURLOPT_ указывает URL-адрес запроса;
- КЕРЛОПТ_ Если для обратного перевода установлено значение 1, curl будет выполнен позже_ Возвращаемая функция exec представляет собой возвращаемую строку URL-адреса, а не направляет возвращаемую строку в стандартный вывод и возвращает значение true;
- КЕРЛОПТ_ Если значение заголовка равно 0, информация о заголовке HTTP не возвращается.
Есть много вариантов для curl, вы можете перейти на официальный сайт PHP( http://www. php .net/manual/en/function.curl-setopt.php )Просмотрите список всех опций, поддерживаемых curl на.
Получить выходную информацию запроса curl
остаться curl_exec() После выполнения функции можно использовать curl_ Функция getinfo() получает соответствующую информацию, выводимую из запроса curl. Пример кода выглядит следующим образом:
curl_exec($ch); $info = curl_getinfo($sh); Echo 'get' $info ['url '].' time consuming. $info ['total]_ 'time] ';
Завиток в приведенном выше коде_ Getinfo возвращает ассоциативный массив, содержащий следующие данные:
- Getinfo возвращает ассоциативный массив, содержащий следующие данные:
- тип содержания_: кодировка содержимого.
- http_ код:Код состояния HTTP.
- размер заголовка_:размер заголовка.
- размер_ запроса: размер запроса.
- ВРЕМЯ ФАЙЛА: время создания файла.
- ssl_ результат проверки:Результаты проверки SSL.
- количество перенаправлений_: количество прыжков.
- total_ Time: общее время.
- время поиска имен_:Время, затрачиваемое на запрос DNS.
- время подключения: ожидание времени подключения.
- время предварительной передачи: время подготовки перед передачей.
- размер_ загрузки: размер загружаемых данных.
- размер_ загрузки: размер загружаемых данных.
- скорость загрузки: скорость загрузки.
- speed_ Загрузка: скорость загрузки.
- длина загружаемого содержимого: длина загружаемого содержимого.
- длина загружаемого содержимого: длина загружаемого содержимого.
- время начала передачи: запланируйте начало передачи.
- время перенаправления_: время перенаправления.
curl_getinfo() Функция также имеет необязательный параметр $opt, который можно использовать для установки некоторых констант, соответствующих предыдущему полю операции. Если установлен второй параметр, будет возвращена только указанная информация. Например, параметр $opt равен curlinfo_ ВСЕГО_ ВРЕМЕНИ , затем curl_getinfo( ) Функция возвращает только total_ Time, то есть общее время передачи. Когда вам нужно только обратить внимание на некоторую информацию о передаче, установка параметра $opt очень важна.
Отправить запрос на получение с помощью curl
Как использовать curl для отправки запроса get, ключ для отправки запроса get состоит в том, чтобы собрать правильный URL-адрес. Адрес запроса и данные get разделяются знаком “?”, затем имена и значения переменных get разделяются знаком”&”. PHP предоставляет нам функцию для сборки запросов get и частей данных– http_build_query Эта функция принимает ассоциативный массив и возвращает строку запроса get, описанную связанными данными. Используя эту функцию в сочетании с общим процессом отправки HTTP-запросов curl, мы закрыли функцию отправки запросов get, docurlgetrequest. Конкретный код выглядит следующим образом:
/**
*@Desc closes the call interface of curl and the request mode of get.
*/
function doCurlGetRequest($url,$data,$timeout = 5){
if($curl == "" || $timeout <= 0){
return false;
}
$url = $url.'?'.http_bulid_query($data);
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
return curl_exec($con);
}Эта функция использует http_ build_ Запрос собранный URL-адрес с параметром get передается в функцию curl_ Init, а затем использует curl для отправки HTTP-запроса.
Отправить запрос на отправку с помощью curl
Вы можете использовать параметры, предоставляемые curl CURLOPT_POSTFIELDS Установите этот параметр для отправки строковых данных, чтобы поместить запрос в тело. Аналогично, мы реализовали функцию отправки запроса post – docurlpostrequest. Код выглядит следующим образом:
/**
**@ desc encapsulates curl calling interface and post request mode
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
if($url == '' || $requestString == '' || $timeout <=0){
return false;
}
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
curl_setopt($con, CURLOPT_POST,true);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
return curl_exec($con);
}В приведенном выше коде, в дополнение к настройкам CURLOPT_POSTFIELDS Кроме того, мы также настроили CURL_POST True указывает, что запрос является запросом post. Данные Get также могут быть переданы в запросе post, просто соберите данные запроса get в URL.
резюме
Выше приведено все содержание этой статьи, я надеюсь, что содержание этой статьи имеет определенную справочную ценность для вашего обучения или работы, спасибо за вашу поддержку в разработке. Если вы хотите узнать об этом больше, пожалуйста, проверьте соответствующие ссылки ниже
Оригинал: “https://developpaper.com/how-to-use-php-curl/”