Класс 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 до его начального состояния (до выполнения Object::__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 bracket. Это означает, что вы можете парсить запросы, такие как:
- ?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необязательно массив() - Если 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, чтобы получить их как значения 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необязательно массив() - Индексированный массив с индексами, такими как '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необязательно массив() - Параметры строки запроса для добавления к URI
- массив
$requestнеобязательно массив() - Индексированный массив с индексами, такими как '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необязательно массив() - Параметры строки запроса для добавления к URI
- массив
$requestнеобязательно массив() - Индексированный массив с индексами, такими как '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 до его начального состояния (до выполнения Object::__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.
Возвращает
mixedВ случае ошибки возвращает false, иначе строку с составленным 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
$lengthoptional 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.
http://api.cakephp.org/2.8/class-HttpSocket.html