1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xutongle-HttpClient

Клонировать/Скачать
README.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 01:13 bbd3ecc

##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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xutongle-HttpClient.git
git@api.gitlife.ru:oschina-mirror/xutongle-HttpClient.git
oschina-mirror
xutongle-HttpClient
xutongle-HttpClient
master