Класс HttpSocket
Класс подключения к сетевому сокету CakePHP.
Базовый класс ядра для HTTP-сетевого взаимодействия. HttpSocket может использоваться как замена cURL в различных местах с использованием объектно-ориентированного подхода.
- CakeSocket
-
HttpSocket
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Расположение: 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 и разбивает его на части как индексированный массив с элементами, такими как 'scheme', 'port', 'query'.
- _setAuth() protectedУстановка аутентификации в запросе
- _setProxy() protectedУстановка конфигурации прокси и аутентификации
- _tokenEscapeChars() protectedПолучение экранируемых символов в соответствии со спецификациями RFC 2616 (HTTP 1.1).
- buildCookies() publicФормирование заголовков cookie для запроса.
- 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('http://cakephp.org/');
Или использовать массив для настройки нескольких параметров:
$http = new HttpSocket(array( 'host' => 'cakephp.org', 'timeout' => 20 ));
См. HttpSocket::$config для параметров, которые могут быть использованы.
Параметры
- string|array
$configoptional array() - Информация о конфигурации, либо строка URL, либо массив параметров.
Переопределяет
CakeSocket::__construct() _buildHeader()source protected
_buildHeader( array $header , string $mode 'standard' )
Формирование заголовка.
Параметры
- array
$header - Заголовок для формирования
- string
$modeoptional 'standard' - Режим
Возвращает
stringСформированный заголовок из массива
_buildRequestLine()source protected
_buildRequestLine( array $request array() )
Формирование строки запроса в соответствии со спецификациями HTTP/1.1. Активируйте режим quirks, чтобы работать вне спецификаций.
Параметры
- array
$requestoptional 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
$urioptional array() - Либо массив $uri, либо строка запроса. Будет использоваться $this->config, если оставлено пустым.
- string
$uriTemplateoptional '%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 и разбивает его на части как индексированный массив с элементами, такими как 'scheme', 'port', 'query'.
Параметры
- строка|массив
$uriнеобязательно null - URI для парсинга
- boolean|массив
$baseнеобязательно array() - Если 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).
Параметры
- boolean
$hexнеобязательно true - true, чтобы получить их в виде шестнадцатеричных значений, в противном случае false
- массив
$charsнеобязательно null - Символы для экранирования
Возвращает
массивСимволы экранирования
buildCookies()source public
buildCookies( array $cookies )
Создаёт заголовки cookie для запроса.
Cookies могут быть как в формате, возвращаемом в ответах, так и простым парной ключ => значение.
Параметры
- массив
$cookies - Массив 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необязательно array() - Массив данных тела запроса.
- массив
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или 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необязательно array() - Параметры строки запроса для добавления к URI
- массив
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или 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необязательно array() - Параметры строки запроса для добавления к URI
- массив
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или 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('http://www.cakephp.org');
$url = $http->url('/search?q=bar'); Возвратит http://www.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.
Возвращает
mixedfalse в случае ошибки или строка с составленным URL.
Наследуемые методы из CakeSocket
__destruct()source public
__destruct( )
Деструктор, используется для разъединения текущего подключения.
_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 - Имя хоста, к которому осуществляется подключение.
address()source public
address( )
Получение IP-адреса текущего подключения.
Возвращает
stringIP-адрес
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 )
Шифрование текущего сокета потока, используя один из определенных методов шифрования.
Параметры
- string
$type - Тип, может быть 'sslv2', 'sslv3', 'sslv23' или 'tls'.
- string
$clientOrServerнеобязательно 'client' - Может быть 'client' или 'server'. По умолчанию 'client'.
- boolean
$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, если данные недоступны или соединение не установлено.
Параметры
- integer
$lengthнеобязательный 1024 - Необязательная длина буфера для чтения; по умолчанию 1024
Возвращает
mixedДанные сокета
setLastError()source public
setLastError( integer $errNum , string $errStr )
Устанавливает последнюю ошибку.
Параметры
- integer
$errNum - Код ошибки
- string
$errStr - Строка ошибки
write()source public
write( string $data )
Записывает данные в сокет.
Параметры
- string
$data - Данные для записи в сокет
Возвращает
booleanУспех
Подробное описание свойств
$configsource
public array
Настройки конфигурации для 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 boolean
При активации $quirksMode, установив его в значение true, все проверки, предназначенные для принудительного соблюдения RFC 2616 (спецификации HTTP/1.1), будут отключены, а дополнительные меры для работы с нестандартными ответами будут включены.
false
$requestsource
public array
Содержит информацию о последнем запросе (только для чтения)
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–2016 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.9/class-HttpSocket.html