Класс предназначен для удобного выполнения сетевых запросов — с помощью расширения curl, а также функций file_get_contents и fsockopen. Класс автоматически использует тот из доступных методов (транспортов) отправки запросов — расширение либо одну из перечисленных функций, — который доступен на сервере, выполняет проверку на наличие ошибок при получении ответа, а также возвращает содержимое ответа, раскодированное в соответствии с указанным форматом.
Порядок использования класса:
- Создать экземпляр класса, передав в него массив необходимых параметров.
- Если необходимо, вызвать «подготовительные» методы:
cookiesиuserAgent. - Для выполнения запроса вызвать метод
query, который вернет содержимое ответа. - Если необходимо, вызвать методы, возвращающие дополнительную информацию об ответе на запрос:
getResponseиgetResponseHeader.
Методы
-
cookies
Устанавливает путь по умолчанию к файлу, содержащему cookies.
-
getResponse
Возвращает содержимое последнего полученного ответа на запрос.
-
getResponseHeader
Возвращает содержимое заголовков последнего полученного ответа.
-
query
Выполняет запрос к указанному ресурсу.
-
multiQuery
Параллельно выполняет несколько curl-запросов с функциями-обработчиками.
-
userAgent
Устанавливает либо возвращает значение, которое будет использовано для заголовка "
User-Agent".
public function __construct ($options, $custom_headers = [])
Параметры
-
$options
Массив параметров для подключения к удаленному ресурсу. Допустимые ключи массива:
- format: формат ожидаемого ответа:
waNet::FORMAT_JSON(JSON),waNet::FORMAT_XML(XML) либоwaNet::FORMAT_RAW(простой, не требующий стандартной обработки) - charset: кодировка отправляемого запроса; значение по умолчанию:
'utf-8' - authorization: флаг, обозначающий необходимость авторизации с использованием заголовка
Authorization - login: имя пользователя для авторизации
- password: пароль для авторизации
- md5: флаг, обозначающий необходимость указания содержимого запроса, обработанного функциями
md5иbase64_encode, в заголовкеContent-MD5. - priority: массив со списком доступных способов отправки запроса (транспортов), определяющий также порядок их применения до обнаружения первого доступного на сервере; приоритет доступных транспортов по умолчанию:
'curl'(расширениеcurl)'fopen'(функцияfile_get_contents())'socket'(функцияfsockopen())
- timeout: таймаут в секундах, в течение которого разрешено продолжать выполнение запроса
- verify: путь к файлу сертификата для подтверждения достоверности запроса (для транспортов
'curl'и'fopen') - ssl: массив параметров для подключения через
'curl'с использованием SSL-сертификата:'key'— значение для параметраCURLOPT_SSLKEY'cert'— значение для параметраCURLOPT_SSLCERT'password'— значение для параметраCURLOPT_SSLCERTPASSWD
- proxy_host: хост прокси-сервера для отправки запросов с использованием транспортов
'curl'или'fopen' - proxy_port: порт прокси-сервера
- proxy_user: имя пользователя для авторизации на прокси
- proxy_password: пароль для авторизации на прокси
- log: путь к альтернативному файлу для сохранения логов в директории
wa-log/; по умолчанию логи сохраняются в файлwaNet.error.log
- format: формат ожидаемого ответа:
-
$custom_headers
Ассоциативный массив дополнительных заголовков для выполнения запроса к удаленному ресурсу.
Пример
$options = [
'format' => waNet::FORMAT_JSON,
'timeout' => 10,
'authorization' => true,
'login' => $login,
'password' => $password,
];
$net = new waNet($options);
public function cookies ($path)
Устанавливает путь по умолчанию к файлу, содержащему cookies, для использования в качестве параметра CURLOPT_COOKIEFILE при подключении через curl. Это значение по умолчанию используется, только если в параметрах подключения через curl не указан иной путь к файлу cookies.
Параметры
-
$path
Путь к файлу cookies.
Пример
$net = new waNet($options); $net->cookies($path);
public function getResponse ($raw = false)
Возвращает содержимое последнего полученного ответа на запрос.
Параметры
-
$raw
Флаг, требующий возврата исходного (оригинального) либо раскодированного содержимого ответа на запрос. По умолчанию возвращается раскодированное содержимое. Формат раскодируемого значения должен совпадать со значением элемента
'format', переданного в конструктор класса.
Пример
$options['format'] = waNet::FORMAT_JSON; $net = new waNet($options); $decoded_response = $net->query($url); $raw_response = $net->getResponse(true);
public function getResponseHeader ($header = null)
Возвращает содержимое заголовков последнего полученного ответа.
Параметры
-
$header
Имя заголовка, содержимое которого нужно получить. Если не указано, метод вернет содержимое всех полученных заголовков.
Пример
$net = new waNet($options); $response = $net->query($url); $response_headers = $net->getResponseHeader();
public function query ($url, $content = [], $method = self::METHOD_GET, $callback = null)
Выполняет запрос к указанному ресурсу и возвращает раскодированное содержимое ответа в соответствии с указанным форматом.
Выполнение метода может привести к возникновению исключения, поэтому его вызов необходимо обернуть в блок try...catch для самостоятельной обработки ошибок. Код ошибки в этом случае соответствует коду ответа HTTP.
Параметры
-
$url
URL отправки запроса
-
$content
Содержимое запроса
-
$method
Метод отправки запроса:
waNet::METHOD_GET— GETwaNet::METHOD_POST— POST (для транспортов'curl'и'fopen')waNet::METHOD_PUT— PUT (для транспортов'curl'и'fopen')waNet::METHOD_PATCH— PATCH (для транспортов'curl'и'fopen')waNet::METHOD_DELETE— DELETE (для транспорта'curl')
-
$callback
Значение типа
callable, которое должно быть запущено после завершения выполнения запроса. Поддерживается только для отправки запросов с использованием транспорта curl.
Пример
$net = new waNet($options); $response = $net->query($url, $content, waNet::METHOD_POST, ['myClass', 'some_callback_method']);
public function multiQuery ($namespace = null, $options = [])
Параллельно выполняет несколько curl-запросов с последующим запуском функций-обработчиков. Параллельное выполнение запросов позволяет сократить время, необходимое коду вашего продукта для выполнения нескольких одновременных запросов.
С другими транспортами отправки запросов, кроме curl, метод не работает.
Порядок использования метода:
- Вызвать метод с произвольным непустым значением параметра $namespace — для инициализации данных.
- Вызвать несколько раз метод query() со значением параметра $callback типа
callable. - Ещё раз вызвать метод
multiQuery()с тем же значением параметра $namespace. В результате этого вызова будут одновременно запущены все запросы через curl, инициированные в шаге 2, для которых при вызове методаquery()для параметра $callback был указано значение типаcallable. Если значение $callback указано не было, то запросы выполняются не параллельно, а последовательно — сразу же при вызове методаquery()в предыдущем шаге 2, не дожидаясь данного шага 3.
Параметры
-
$namespace
Произвольное текстовое обозначение для группы curl-запросов, которые нужно выполнить параллельно. Если при втором вызове метода
multiQuery()значение этого параметра не указано, то по умолчанию будет использовано значение, которое было указано при первом вызове метода. -
$options
Массив параметров выполнения запросов через curl, которые должны применяться вместо значений, указанных в параметре
$optionsпри создании экземпляра класса, который используется для многократного вызова методаquery()перед вторым вызовом методаmultiQuery(). Значение параметра $options нужно указывать при первом вызовеmultiQuery().
Пример
waNet::multiQuery(
'my_query',
[
'timeout' => 10,
]
);
$net = new waNet([
'priority' => [
'curl',
],
// это значение не сработает, потому что оно переопределено при первом вызове multiQuery()
'timeout' => 20,
]);
// эти запросы выполнятся одновременно — при втором вызове метода multiQuery()
// после их завершения будут по очереди выполнены обработчики, указанные в 4-м параметре при вызове метода query()
$response1 = $net->query($url1, $content1, waNet::METHOD_POST, ['myClass', 'some_callback_method']);
$response2 = $net->query($url2, $content2, waNet::METHOD_POST, ['myClass', 'another_callback_method']);
$response3 = $net->query($url3, $content3, waNet::METHOD_POST, ['myClass', 'extra_callback_method']);
// эти запросы выполнятся сразу же — не дожидаясь второго вызова multiQuery()
// потому что в 4-м параметре $callback не указан обработчик
$response4 = $net->query($url4, $content4, waNet::METHOD_POST);
$response5 = $net->query($url5, $content5, waNet::METHOD_POST);
waNet::multiQuery('my_query');
public function userAgent ($user_agent = null)
Устанавливает либо возвращает значение, которое будет использовано для заголовка "User-Agent".
Параметры
-
$user_agent
Новое значение, которое нужно установить для заголовка
User-Agent. Если не указано, то метод только вернет текущее значение. По умолчанию используется значение вида"Webasyst-Framework/[номер версии Webasyst]".
Пример
$net = new waNet($options); $net->userAgent($custom_user_agent); $response = $net->query($url);









