Класс HttpSocket
Класс CakePHP соединения через сетевой сокет.
Базовый класс ядра для HTTP сетевого взаимодействия. HttpSocket может использоваться как объектно-ориентированная замена cURL во многих местах.
- CakeSocket
-
HttpSocket
Авторские права: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
Лицензия: MIT Лицензия
Расположение: Cake/Network/Http/HttpSocket.php
Краткое описание свойств
-
$_authprotectedНастройки аутентификацииarray -
$_contentResourceprotectedРесурс для получения содержимого запросаmixed -
$_proxyprotectedНастройки проксиarray -
$configpublicНастройки конфигурации HttpSocket и запросовarray -
$quirksModepublicbooleanПри активации $quirksMode, установив его в значение true, все проверки, предназначенные для соблюдения RFC 2616 (спецификации HTTP/1.1). будут отключены, а дополнительные меры для работы с нестандартными ответами будут включены.
-
$requestpublicСодержит информацию о последнем запросе (только для чтения)array -
$responsepublicСодержит информацию о последнем ответе (только для чтения)array -
$responseClasspublicИмя класса ответаstring
Унаследованные свойства
-
_baseConfig,_connectionErrors,_encryptMethods,connected,connection,description,encrypted,lastError
Краткое описание методов
- __construct() publicСоздание HTTP сокета с использованием указанной конфигурации.
- _buildHeader() protectedСоздание заголовка.
- _buildRequestLine() protectedСоздание строки запроса в соответствии со спецификациями HTTP/1.1. Активируйте режим quirks, чтобы работать вне спецификаций.
- _buildUri() protectedПреобразует массив $uri в полностью квалифицированную строку URL.
- _configUri() protectedРазбирает и устанавливает указанный URI в текущую конфигурацию запроса.
- _escapeToken() protectedЭкранирует заданный $token в соответствии со спецификациями RFC 2616 (HTTP 1.1).
- _parseQuery() protected
Эта функция может быть воспринята как обратная функция http_build_query() PHP5. Она принимает заданную строку запроса и преобразует её в массив, поддерживая вложенность с использованием синтаксиса php скобок. Таким образом, вы можете анализировать запросы, такие как:
- _parseUri() protected
Разбирает заданный URI и разделяет его на части как индексированный массив с элементами, такими как 'схема', 'порт', 'запрос'.
- _setAuth() protectedУстановка аутентификации в запросе
- _setProxy() protectedУстановка конфигурации прокси и аутентификации
- _tokenEscapeChars() protectedПолучение экранирующих символов в соответствии со спецификациями RFC 2616 (HTTP 1.1).
- buildCookies() publicСоздание заголовков куки для запроса.
- configAuth() publicУстановка настроек аутентификации.
- configProxy() publicУстановка настроек прокси
- delete() publicВыполнение запроса DELETE по указанному URI, запросу и параметрам.
- get() publicВыполнение запроса GET по указанному URI, запросу и параметрам.
- head() publicВыполнение запроса HEAD по указанному URI, запросу и параметрам.
- patch() publicВыполнение запроса PATCH по указанному URI, запросу и параметрам.
- post() publicВыполнение запроса POST по указанному URI, запросу и параметрам.
- put() publicВыполнение запроса PUT по указанному URI, запросу и параметрам.
- request() public
Выполнение указанного запроса. HttpSocket::get() и HttpSocket::post() оборачивают этот метод и предоставляют более детальный интерфейс.
- reset() public
Сбрасывает состояние экземпляра HttpSocket в исходное состояние (до выполнения CakeObject::__construct) или делает то же самое частично для свойств request и response.
- setContentResource() publicУстановка ресурса для получения содержимого запроса. Этот ресурс должен поддерживать fwrite.
- url() public
Нормализует URL в $uriTemplate. Если шаблон не указан, будет использован по умолчанию. Сгенерирует URL с использованием текущей конфигурации.
Подробное описание методов
__construct()source public
__construct( string|array $config array() )
Создание HTTP сокета с использованием указанной конфигурации.
Можно использовать строку URL для установки URL и использования конфигураций по умолчанию для всех остальных параметров:
$http = new HttpSocket('https://cakephp.org/');
Или использовать массив для настройки нескольких параметров:
$http = new HttpSocket(array( 'host' => 'cakephp.org', 'timeout' => 20 ));
См. HttpSocket::$config для параметров, которые могут быть использованы.
Параметры
- string|array
$configнеобязательный array() - Информация о конфигурации, либо строка URL, либо массив параметров.
Переопределяет
CakeSocket::__construct() _buildHeader()source protected
_buildHeader( array $header , string $mode 'standard' )
Создание заголовка.
Параметры
- array
$header - Заголовок для создания
- string
$modeнеобязательный 'standard' - Режим
Возвращает
stringСгенерированный из массива заголовок
_buildRequestLine()source protected
_buildRequestLine( array $request array() )
Создание строки запроса в соответствии со спецификациями HTTP/1.1. Активируйте режим quirks, чтобы работать вне спецификаций.
Параметры
- array
$requestнеобязательный array() - Должен содержать ключ 'uri'. Также должен содержать ключ 'method', в противном случае по умолчанию используется GET.
Возвращает
stringСтрока запроса
Выбрасывает
SocketException_buildUri()source protected
_buildUri( string|array $uri array() , string $uriTemplate '%scheme://%user:%pass@%host:%port/%path?%query#%fragment' )
Преобразует массив $uri в полностью квалифицированную строку URL
Параметры
- string|array
$uriнеобязательный array() - Либо массив $uri, либо строка запроса. Использует $this->config, если оставлено пустым.
- string
$uriTemplateнеобязательный '%scheme://%user:%pass@%host:%port/%path?%query#%fragment' - Шаблон/формат URI, который следует использовать.
Возвращает
mixedПолностью квалифицированный URL, отформатированный в соответствии с $uriTemplate, или false при ошибке
_configUri()source protected
_configUri( string|array $uri null )
Парсит и устанавливает указанный URI в текущую конфигурацию запроса.
Параметры
- строка|массив
$uriнеобязательно null - URI, см. HttpSocket::_parseUri()
Возвращаемое значение
booleanЕсли uri объединён в конфигурацию
_escapeToken()source protected
_escapeToken( string $token , array $chars null )
Экранирует заданный $token в соответствии со спецификацией RFC 2616 (HTTP 1.1).
Параметры
- строка
$token - Токен для экранирования
- массив
$charsнеобязательно null - Символы для экранирования
Возвращаемое значение
строкаЭкранированный токен
_parseQuery()source protected
_parseQuery( string|array $query )
Эта функция может быть представлена как обратная функция PHP5's http_build_query(). Она принимает заданную строку запроса и преобразует её в массив, поддерживая вложенность с использованием синтаксиса php скобок. Это означает, что вы можете парсить запросы, такие как:
- ?key[subKey]=value
- ?key[]=value1&key[]=value2
Ведущая '?' в $query необязательна и не влияет на результат этой функции. Для полного понимания возможностей этой реализации см. HttpSocketTest::testparseQuery()
Параметры
- строка|массив
$query - Строка запроса для преобразования в массив или массив для возврата непосредственно "как есть"
Возвращаемое значение
массивРезультат парсинга $query в массив, который может быть многоуровневым. Если $query пуст, возвращается пустой массив.
_parseUri()source protected
_parseUri( string|array $uri null , boolean|array $base array() )
Парсит заданный URI и разбивает его на части в виде индексированного массива с элементами, такими как 'схема', 'порт', 'запрос'.
Параметры
- строка|массив
$uriнеобязательно null - URI для парсинга
- булево|массив
$baseнеобязательно массив() - Если true, использовать конфигурацию URI по умолчанию, иначе индексированный массив для установки 'scheme', 'host', 'port' и т.д.
Возвращаемое значение
массивОбработанный URI
_setAuth()source protected
_setAuth( )
Устанавливает аутентификацию в запросе
Выбрасывает
SocketException_setProxy()source protected
_setProxy( )
Устанавливает конфигурацию прокси и аутентификацию
Выбрасывает
SocketException_tokenEscapeChars()source protected
_tokenEscapeChars( boolean $hex true , array $chars null )
Получает символы экранирования в соответствии со спецификацией RFC 2616 (HTTP 1.1).
Параметры
- булево
$hexнеобязательно true - true, чтобы получить их как значения HEX, иначе false
- массив
$charsнеобязательно null - Символы для экранирования
Возвращаемое значение
массивСимволы экранирования
buildCookies()source public
buildCookies( array $cookies )
Создаёт заголовки cookie для запроса.
Куки могут быть в формате, возвращаемом в ответах, или в виде просто пары ключ => значение.
Параметры
- массив
$cookies - Массив куки, которые нужно отправить с запросом.
Возвращаемое значение
строкаСтрока заголовка cookie, которая должна быть отправлена с запросом.
configAuth()source public
configAuth( string $method , string|array $user null , string $pass null )
Настройка параметров аутентификации.
Принимает два вида параметров. Если вам нужен только имя пользователя + пароль, как при Basic аутентификации, вы можете сделать следующее:
$http->configAuth('Basic', 'mark', 'secret'); Если вы используете стратегию аутентификации, которая требует больше ввода, например, Digest аутентификация, вы можете вызвать configAuth() с массивом информации о пользователе.
$http->configAuth('Digest', array(
'user' => 'mark',
'pass' => 'secret',
'realm' => 'my-realm',
'nonce' => 1235
)); Чтобы удалить установленную стратегию аутентификации, вызовите configAuth() без параметров:
$http->configAuth();
Параметры
- строка
$method - Метод аутентификации (например, Basic, Digest). Если пусто, отключить аутентификацию
- строка|массив
$userнеобязательно null - Имя пользователя для аутентификации. Может быть массивом с настройками для класса аутентификации
- строка
$passнеобязательно null - Пароль для аутентификации
configProxy()source public
configProxy( string|array $host , integer $port 3128 , string $method null , string $user null , string $pass null )
Установить параметры прокси
Параметры
- строка|массив
$host - Хост прокси. Может быть массивом с настройками для класса аутентификации
- целое число
$portнеобязательно 3128 - Порт. По умолчанию 3128.
- строка
$methodнеобязательно null - Метод прокси (например, Basic, Digest). Если пусто, отключить аутентификацию прокси
- строка
$userнеобязательно null - Имя пользователя, если прокси требует аутентификации
- строка
$passнеобязательно null - Пароль для аутентификации прокси
delete()source public
delete( string|array $uri null , array $data array() , array $request array() )
Выполняет запрос DELETE по указанному URI, запросу и параметрам.
Параметры
- строка|массив
$uriнеобязательно null - URI запроса (см.
HttpSocket::_parseUri()) - массив
$dataнеобязательно массив() - Массив данных тела запроса.
- массив
$requestнеобязательно массив() - Индексированный массив с такими индексами, как 'метод' или uri
Возвращаемое значение
смешанноеРезультат запроса
get()source public
get( string|array $uri null , array $query array() , array $request array() )
Выполняет запрос GET по указанному URI, запросу и параметрам.
Используя строковый uri и массив параметров строки запроса:
$response = $http->get('http://google.com/search', array('q' => 'cakephp', 'client' => 'safari'));
Выполнит запрос GET к http://google.com/search?q=cakephp&client=safari
Вы можете выразить то же самое, используя массив uri и параметры строки запроса:
$response = $http->get(
array('host' => 'google.com', 'path' => '/search'),
array('q' => 'cakephp', 'client' => 'safari')
); Параметры
- строка|массив
$uriнеобязательно null - URI запроса. Либо строковый URI, либо массив URI, см. HttpSocket::_parseUri()
- массив
$queryнеобязательно массив() - Параметры строки запроса, которые нужно добавить к URI
- массив
$requestнеобязательно массив() - Индексированный массив с такими индексами, как 'метод' или uri
Возвращаемое значение
смешанноеРезультат запроса, либо false при ошибке, либо ответ на запрос.
head()source public
head( string|array $uri null , array $query array() , array $request array() )
Выполняет запрос HEAD по указанному URI, запросу и параметрам.
По определению, запросы HEAD идентичны запросам GET, за исключением того, что они не возвращают тело ответа. Это означает, что вся информация и примеры, относящиеся к GET, также применимы к HEAD.
Параметры
- строка|массив
$uriнеобязательно null - URI запроса. Либо строковый URI, либо массив URI, см. HttpSocket::_parseUri()
- массив
$queryнеобязательно массив() - Параметры строки запроса, которые нужно добавить к URI
- массив
$requestнеобязательно массив() - Индексированный массив с такими индексами, как 'метод' или uri
Возвращаемое значение
смешанноеРезультат запроса, либо false при ошибке, либо ответ на запрос.
patch()source public
patch( string|array $uri null , array $data array() , array $request array() )
Выполняет запрос PATCH по указанному URI, запросу и параметрам.
Параметры
- string|array
$uriнеобязательно null - URI запроса, см. HttpSocket::_parseUri()
- array
$dataнеобязательно array() - Массив данных тела запроса с ключами и значениями.
- array
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или 'uri'
Возвращает
mixedРезультат запроса
post()source public
post( string|array $uri null , array $data array() , array $request array() )
Выполняет запрос POST по указанному URI, запросу и параметрам.
post() может быть использован для отправки простых массивов данных на URL:
$response = $http->post('http://example.com', array(
'username' => 'batman',
'password' => 'bruce_w4yne'
)); Параметры
- string|array
$uriнеобязательно null - URI запроса. См. HttpSocket::_parseUri()
- array
$dataнеобязательно array() - Массив данных тела запроса с ключами и значениями.
- array
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или 'uri'
Возвращает
mixedРезультат запроса, false при ошибке или ответ на запрос.
put()source public
put( string|array $uri null , array $data array() , array $request array() )
Выполняет запрос PUT по указанному URI, запросу и параметрам.
Параметры
- string|array
$uriнеобязательно null - URI запроса, см. HttpSocket::_parseUri()
- array
$dataнеобязательно array() - Массив данных тела запроса с ключами и значениями.
- array
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или 'uri'
Возвращает
mixedРезультат запроса
request()source public
request( string|array $request array() )
Выполняет указанный запрос. HttpSocket::get() и HttpSocket::post() оборачивают этот метод и предоставляют более подробный интерфейс.
Параметры
- string|array
$requestнеобязательно array() - Строка URI или массив, определяющий хост/URI
Возвращает
mixedfalse при ошибке, HttpSocketResponse при успехе
Вызывает
SocketExceptionreset()source public
reset( boolean $full true )
Сбрасывает состояние экземпляра HttpSocket до начального состояния (перед выполнением CakeObject::__construct) или частично сбрасывает свойства request и response.
Параметры
- boolean
$fullнеобязательно true - Если false, сбрасываются только HttpSocket::response и HttpSocket::request
Возвращает
booleanTrue при успехе
Переопределяет
CakeSocket::reset() setContentResource()source public
setContentResource( resource|boolean $resource )
Устанавливает ресурс для получения содержимого запроса. Этот ресурс должен поддерживать fwrite.
Параметры
- resource|boolean
$resource - Ресурс или false для отключения использования ресурса
Вызывает
SocketExceptionurl()source public
url( string|array $url null , string $uriTemplate null )
Нормализует URL в $uriTemplate. Если шаблон не задан, будет использован по умолчанию. Сгенерирует URL, используя текущие настройки.
Использование:
После настройки части параметров запроса можно использовать url() для генерации URL.
$http = new HttpSocket('https://www.cakephp.org');
$url = $http->url('/search?q=bar'); Возвратит https://cakephp.org/search?q=bar
url() также может использоваться с пользовательскими шаблонами:
$url = $http->url('http://www.cakephp/search?q=socket', '/%path?%query');
Возвратит /search?q=socket.
Параметры
- string|array
$urlнеобязательно null - Строка или массив опций URL для создания URL.
- string
$uriTemplateнеобязательно null - Шаблонная строка для форматирования URL.
Возвращает
mixedПри ошибке false, иначе строка с составленным URL.
Методы, унаследованные от CakeSocket
_addTlsVersions()source protected
_addTlsVersions( )
Добавляет версии TLS, зависящие от конкретных версий PHP.
Эти версии TLS не поддерживаются более старыми версиями PHP, поэтому мы должны условно устанавливать их, если они поддерживаются.
Начиная с PHP5.6.6, STREAM_CRYPTO_METHOD_TLS_CLIENT не включает TLS1.1 или 1.2. Если у нас есть поддержка TLS1.2, нам нужно обновить карту методов.
См.
https://bugs.php.net/bug.php?id=69195https://github.com/php/php-src/commit/10bc5fd4c4c8e1dd57bd911b086e9872a56300a0
_connectionErrorHandler()source protected
_connectionErrorHandler( integer $code , string $message )
socket_stream_client() не заполняет errNum или $errStr при ошибках подключения, как, например, при ошибках проверки SSL.
Вместо этого нам нужно обработать эти ошибки вручную.
Параметры
- integer
$code - Код.
- string
$message - Сообщение.
_setSslContext()source protected
_setSslContext( string $host )
Настройка параметров контекста SSL.
Параметры
- string
$host - Имя хоста, к которому осуществляется подключение.
addresses()source public
addresses( )
Получает все IP-адреса, связанные с текущим соединением.
Возвращает
arrayIP-адреса
connect()source public
connect( )
Подключает сокет к заданному хосту и порту.
Возвращает
booleanУспех
Вызывает
SocketExceptioncontext()source public
context( )
Получает контекст соединения.
Возвращает
null|arrayNull, если соединения нет, массив, если есть.
disconnect()source public
disconnect( )
Отключает сокет от текущего соединения.
Возвращает
booleanУспех
enableCrypto()source public
enableCrypto( string $type , string $clientOrServer 'client' , boolean $enable true )
Шифрует текущий сокет потока, используя один из определённых методов шифрования.
Параметры
- строка
$type - Тип, который может быть одним из 'sslv2', 'sslv3', 'sslv23', 'tls', 'tlsv1_1' или 'tlsv1_2'.
- строка
$clientOrServerнеобязательный 'client' - Может быть одним из 'client', 'server'. По умолчанию 'client'.
- логическое значение
$enableнеобязательный true - Включить или отключить шифрование. По умолчанию включено (true).
Возвращает
booleanTrue в случае успеха
Выбрасывает
InvalidArgumentExceptionЕсли выбран неверный метод шифрования.
SocketExceptionПри попытке включить SSL/TLS.
См. также
stream_socket_enable_cryptolastError()source public
lastError( )
Возвращает последнюю ошибку в виде строки.
Возвращает
string|nullПоследняя ошибка
read()source public
read( integer $length 1024 )
Читает данные из сокета. Возвращает false, если данные недоступны или соединение не может быть установлено.
Параметры
- целое число
$lengthнеобязательный 1024 - Необязательная длина буфера для чтения; по умолчанию 1024
Возвращает
mixedДанные сокета
setLastError()source public
setLastError( integer $errNum , string $errStr )
Устанавливает последнюю ошибку.
Параметры
- целое число
$errNum - Код ошибки
- строка
$errStr - Строка ошибки
write()source public
write( string $data )
Записывает данные в сокет.
Параметры
- строка
$data - Данные для записи в сокет
Возвращает
booleanУспех
Подробное описание свойств
$configsource
public массив
Настройки конфигурации для HttpSocket и запросов
array(
'persistent' => false,
'host' => 'localhost',
'protocol' => 'tcp',
'port' => 80,
'timeout' => 30,
'ssl_verify_peer' => true,
'ssl_allow_self_signed' => false,
'ssl_verify_depth' => 5,
'ssl_verify_host' => true,
'request' => array(
'uri' => array(
'scheme' => array('http', 'https'),
'host' => 'localhost',
'port' => array(80, 443)
),
'redirect' => false,
'cookies' => array(),
)
) $quirksModesource
public логическое значение
При активации $quirksMode, установив его в true, все проверки, предназначенные для обеспечения соблюдения RFC 2616 (спецификаций HTTP/1.1), будут отключены, а дополнительные меры для работы с нестандартными ответами будут включены.
false
$requestsource
public массив
Содержит информацию о последнем запросе (только для чтения)
array(
'method' => 'GET',
'uri' => array(
'scheme' => 'http',
'host' => null,
'port' => 80,
'user' => null,
'pass' => null,
'path' => null,
'query' => null,
'fragment' => null
),
'version' => '1.1',
'body' => '',
'line' => null,
'header' => array(
'Connection' => 'close',
'User-Agent' => 'CakePHP'
),
'raw' => null,
'redirect' => false,
'cookies' => array(),
)
© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/2.10/class-HttpSocket.html