##HttpClient через HTTP/HTTPS протокол получает данные ###Установка
"require": {
"php": ">=5.4.0",
"leaps/httpclient": "1.4.9"
}
Если вы модифицировали код leaps/httpclient, я буду рад, если вы отправите мне свои изменения. Если у вас возникнут какие-либо проблемы при использовании, пожалуйста, отправьте их мне через раздел issues справа. Я постараюсь исправить их как можно скорее. Этот проект обновляется очень часто. Версии 1.2 и 1.3 совместимы, за исключением класса ответа. Если вы используете версию 1.2 и хотите обновить её до версии 1.3, вам нужно продолжать использовать класс ответа версии 1.2. ###Базовое использование
Этот компонент очень прост в использовании:
<?php
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
Также можно использовать для получения содержимого различных веб-страниц:
<?php
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$responses = $HttpClient->get(['http://www.baidu.com/', 'http://www.qq.com']);
foreach ($responses as $response) {
echo $response->getContent();
}
###Настройка User Agent По умолчанию, если этот компонент используется в WEB-форме, то UserAgent берётся из браузера пользователя. В режиме cli это значение — версия PHP.
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->setUserAgent('test');
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
###Настройка cookie $cookie — строка, несколько cookie разделяются символом «;».
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
//$HttpClient->setCookie(['a'=>'3']);
$HttpClient->setCookie('a=1;b=a;c[0]=1;c[1]=2');
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
###Настройка прокси-сервера
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->setHttpProxy('host', 'port');
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
###Настройка базовой аутентификации
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->setAuthorization('username', 'password');
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
###Настройка реферера
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->setReferer('http://www.test.com/');
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
###Настройка IP сервера Таким образом можно избежать DNS-разрешения при запросе домена.
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
// 这样设置请求页面并不会通过DNS解析获取百度服务器的数据,而是直接请求127.0.0.1(即本机)的服务器的数据
$HttpClient->setHostIp('127.0.0.1');
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
###Настройка максимального количества запросов в очереди HttpClient поддерживает параллельные запросы. Подробнее см. метод get(). Если одновременно запрашивать один сервер, это может вызвать большую нагрузку на запрашиваемый сервер и увеличить сетевую нагрузку на IO на этом сервере. Поэтому этот параметр можно использовать для управления максимальным количеством одновременных запросов. Когда достигается предел, очередь будет ждать завершения одного запроса перед добавлением следующего.
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->setMultiMaxNum(100);
$response = $HttpClient->get(['http://www.baidu.com/']);
echo $response->getContent();
###Другие настройки
Используется для компенсации методов, которые не существуют в классе HttpClient. Пожалуйста, обратитесь к конкретному методу драйвера, например, если используется CURL, он аналогичен методу setOption() CURL.
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->setOption(CURLOPT_TIMEOUT, 30);
$response = $HttpClient->get('http://www.baidu.com/');
echo $response->getContent();
###Запрос GET
Используйте метод GET для запроса одной (или нескольких) страниц. Это может значительно сократить время API-запроса и установить тайм-аут, единица измерения — секунды. Поддерживает параллельные процессы запроса, особенности параллельных запросов: например, необходимо запросить 100 страниц, традиционный способ — загружать по одной странице за раз, предположим, что каждая страница требует 0,1 секунды, тогда загрузка 100 страниц займёт 10 секунд. Используя параллельный метод, теоретически 100 страниц могут быть загружены за 0,1 секунду.
Для одиночного URL возвращается объект содержимого запроса. Для нескольких URL возвращается массив с URL в качестве ключа.
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
// Запрос одной страницы
echo $HttpClient->get('http://www.baidu.com/', 3)->getContent();
// Запрос нескольких страниц
$urls = array
(
'http://www.baidu.com/',
'http://www.google.com/',
'http://www.sina.com.cn/test.html',
);
// Возвращается массив с url в качестве ключа, обратите внимание, что порядок может отличаться от $urls
print_r($HttpClient->get($urls));
###POST-запрос
Отправьте данные с помощью метода POST, поддерживая одновременный запрос нескольких страниц.
// Запрос одной страницы
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->post('http://www.baidu.com/', array('a'=>1, 'b'=>1));
// Запрос нескольких страниц
$urls = array
(
'http://www.baidu.com/',
'http://www.google.com/',
);
$vars = array
(
array('a'=>1,'b'=>1), //соответствует http://www.baidu.com/
array('c'=>1,'d'=>1), //соответствует http://www.google.com/
);
print_r($HttpClient->post($urls, $vars));
###PUT-запрос
Отправьте данные с помощью метода PUT, поддерживая одновременный запрос нескольких страниц.
// Запрос одной страницы ###delete запрос
Используйте метод DELETE для запроса одной (или нескольких) страниц. Это может значительно сократить время запроса API и позволяет установить время ожидания в секундах. Поддерживает одновременные процессы запросов, которые характеризуются, например, необходимостью одновременного запроса 100 страниц. Традиционно каждая страница загружается по очереди, и если загрузка каждой страницы занимает 0,1 секунды, то загрузка 100 страниц займёт 10 секунд. Однако при использовании параллельного метода все 100 страниц могут быть загружены одновременно, что значительно повышает эффективность.
Для одного URL возвращается объект содержимого запроса, а для нескольких URL — массив с URL в качестве ключа.
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
// Запрос одной страницы
echo $HttpClient->delete('http://www.baidu.com/',3)->getContent();
// Запрос нескольких страниц
$urls = array
(
'http://www.baidu.com/',
'http://www.google.com/',
'http://www.sina.com.cn/test.html',
);
// Возвращает массив с ключами в виде URL, обратите внимание, что порядок ключей может отличаться от порядка в массиве $urls
print_r($HttpClient->delete($urls));
###Upload загрузка
Отправьте данные с помощью метода POST. Не поддерживает одновременный запрос нескольких страниц.
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->upload('http://localhost/upload', 'pic','/tmp/test.jpg',['a'=>1,'b'=>1]);
//Или
//Create an instance
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$HttpClient->addFile('pic','/tmp/test.jpg','image/jpg');
$HttpClient->post('http://localhost/upload', ['a'=>1,'b'=>1]);
###Расширенный ответ (Response)
$HttpClient = new \Leaps\HttpClient\Adapter\Curl();
$response = $HttpClient->get('http://www.baidu.com/');
//Получить тип документа ответа
echo $response->getContentType();
//Получить кодировку документа ответа (если в ответе нет информации о кодировке, этот метод не сможет получить правильную кодировку)
echo $response->getCharSet();
//Получить расширение документа ответа, чтобы можно было сохранить документ после загрузки (в зависимости от типа документа)
echo $response->getContentFormat();
//Получить код состояния ответа (например, 200)
echo $response->getStatusCode();
//Получить исходный заголовок ответа
echo $response->getRawHeader();
//Получить проанализированный заголовок ответа в формате ключ-значение
echo $response->getHeaders();
//Получить указанный заголовок ответа
echo $response->getHeader($name);
//Получить коллекцию файлов cookie, проанализированную из ответа, в виде массива
echo $response->getCookies();
//Получить значение указанного файла cookie
echo $response->getCookie($name);
//Получить время, затраченное на текущий запрос
echo $response->getTime()
//Получить содержимое ответа
echo $response->getContent();
//Получить теги заголовка и метатегов HTML-документа в виде массива
echo $response->getHeadTags();
//Проверить, является ли код ответа действительным HTTP-ответом
echo $response->isInvalid();
//Проверить, был ли ответ успешным (ответы с кодами 200–300 считаются успешными)
echo $response->isSuccessful();
//Проверить, является ли ответ перенаправлением (коды 300–400)
echo $response->isRedirection();
//Проверить, является ли ответ ошибкой клиента (коды 400–500)
echo $response->isClientError();
//Проверить, является ли ответ внутренней ошибкой сервера (коды 500–600)
echo $response->isServerError();
//Проверить, равен ли код 200
echo $response->isOk();
//Проверить, равен ли код 403
echo $response->isForbidden();
//Проверить, равен ли код 404
echo $response->isNotFound();
//Проверить, равны ли коды 201,04,304
echo $response->isEmpty();
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )