Класс HttpSocket
Класс CakePHP для подключения к сетевому сокету HTTP.
Базовый класс ядра для HTTP сетевого взаимодействия. HttpSocket может быть использован в качестве объектно-ориентированной замены для cURL во многих местах.
- CakeSocket
-
HttpSocket
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Расположение Cake/Network/Http/HttpSocket.php
Подробное описание методов
__constructsource 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 для параметров, которые могут быть использованы.
Параметры
- строка|массив
$configнеобязательно массив() - Информация о конфигурации, либо строка URL, либо массив параметров.
Переопределяет
CakeSocket::__construct() _buildHeadersource protected
_buildHeader( array $header , string $mode 'standard' )
Создает заголовок.
Параметры
- массив
$header - Заголовок для создания
- строка
$modeнеобязательно 'standard' - Режим
Возвращает
stringЗаголовок, созданный из массива
_buildRequestLinesource protected
_buildRequestLine( array $request array() )
Строит строку запроса в соответствии со спецификациями HTTP/1.1. Активируйте режим quirks, чтобы работать вне спецификаций.
Параметры
- массив
$requestнеобязательно массив() - Должен содержать ключ 'uri'. Также должен содержать ключ 'method', в противном случае по умолчанию используется GET.
Возвращает
stringСтрока запроса
Исключения
SocketExceptionSocketException
_buildUrisource protected
_buildUri( string|array $uri array() , string $uriTemplate '%scheme://%user:%pass@%host:%port/%path?%query#%fragment' )
Принимает массив $uri и преобразует его в полностью квалифицированную строку URL.
Параметры
- строка|массив
$uriнеобязательно массив() - Либо массив $uri, либо строка запроса. Будет использовать $this->config, если оставлено пустым.
- строка
$uriTemplateнеобязательно '%scheme://%user:%pass@%host:%port/%path?%query#%fragment' - Шаблон/формат URI, который нужно использовать.
Возвращает
mixedПолностью квалифицированный URL, отформатированный в соответствии с $uriTemplate, или false при ошибке
_configUrisource protected
_configUri( string|array $uri null )
Анализирует и устанавливает указанный URI в текущую конфигурацию запроса.
Параметры
- строка|массив
$uriнеобязательно null - URI, см. HttpSocket::_parseUri()
Возвращает
booleanЕсли uri слился с конфигурацией
_escapeTokensource protected
_escapeToken( string $token , array $chars null )
Экранирует заданный $token в соответствии со спецификациями RFC 2616 (HTTP 1.1).
Параметры
- строка
$token - Токен для экранирования
- массив
$charsнеобязательно null - Символы для экранирования
Возвращает
stringЭкранированный токен
_parseQuerysource protected
_parseQuery( string|array $query )
Эта функция может быть воспринята как обратная функция PHP5 http_build_query(). Она принимает заданную строку запроса и преобразует ее в массив и поддерживает вложение с помощью синтаксиса скобок PHP. Это означает, что вы можете анализировать запросы, такие как:
- ?key[subKey]=value
- ?key[]=value1&key[]=value2
Ведущая метка '?' в $query необязательна и не влияет на результат этой функции. Для полного набора возможностей этой реализации см. HttpSocketTest::testparseQuery()
Параметры
- строка|массив
$query - Строка запроса для анализа в массив или массив, который необходимо вернуть "как есть"
Возвращает
array$query, разобранный в возможно многоуровневый массив. Если задан пустой $query, возвращается пустой массив.
_parseUrisource protected
_parseUri( string|array $uri null , boolean|array $base array() )
Анализирует заданный URI и разбивает его на части как индексированный массив с элементами, такими как 'scheme', 'port', 'query'.
Параметры
- строка|массив
$uriнеобязательно null - URI для анализа
- булево|массив
$baseнеобязательно массив() - Если true, использовать стандартную конфигурацию URI, иначе индексированный массив для установки 'scheme', 'host', 'port' и т. д.
Возвращает
arrayПроанализированный URI
_setAuthsource protected
_setAuth( )
Установить аутентификацию в запросе
Исключения
SocketExceptionSocketException
_setProxysource protected
_setProxy( )
Настройте конфигурацию прокси и аутентификацию
Исключения
SocketExceptionSocketException
_tokenEscapeCharssource protected
_tokenEscapeChars( boolean $hex true , array $chars null )
Получить символы экранирования в соответствии со спецификациями RFC 2616 (HTTP 1.1).
Параметры
- булево
$hexнеобязательно true - true, чтобы получить их в виде шестнадцатеричных значений, в противном случае false
- массив
$charsнеобязательно null - Символы для экранирования
Возвращает
arrayСимволы экранирования
buildCookiessource public
buildCookies( array $cookies )
Создает заголовки куки для запроса.
Куки могут быть в формате, возвращенном в ответах, или простым массивом ключ => значение.
Параметры
- массив
$cookies - Массив куки для отправки с запросом.
Возвращает
stringСтрока заголовка куки для отправки с запросом.
configAuthsource public
configAuth( string $method , string|array $user null , string $pass null )
Настроить параметры аутентификации.
Принимает два формата параметров. Если вам нужно только имя пользователя + пароль, как в случае с базовой аутентификацией, вы можете сделать следующее:
$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 - Пароль для аутентификации
configProxysource public
configProxy( string|array $host , integer $port 3128 , string $method null , string $user null , string $pass null )
Настройка прокси-сервера
Параметры
- string|array
$host - Хост прокси-сервера. Может быть массивом с настройками для класса аутентификации
- integer
$portнеобязательно 3128 - Порт. По умолчанию 3128.
- string
$methodнеобязательно null - Метод прокси (например, Basic, Digest). Если пусто, отключить аутентификацию по прокси
- string
$userнеобязательно null - Имя пользователя, если прокси требует аутентификации
- string
$passнеобязательно null - Пароль для аутентификации по прокси
deletesource public
delete( string|array $uri null , array $data array() , array $request array() )
Выполнение запроса DELETE по указанному URI, параметрам запроса и телу запроса.
Параметры
- string|array
$uriнеобязательно null - URI для запроса (см.
HttpSocket::_parseUri()) - array
$dataнеобязательно array() - Массив данных тела запроса.
- array
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или uri
Возвращает
mixedРезультат запроса
getsource 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') );
Параметры
- string|array
$uriнеобязательно null - URI для запроса. Либо строка uri, либо массив uri, см. HttpSocket::_parseUri()
- array
$queryнеобязательно array() - Параметры строки запроса, которые нужно добавить к URI
- array
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или uri
Возвращает
mixedРезультат запроса, либо false при ошибке, либо ответ на запрос.
headsource public
head( string|array $uri null , array $query array() , array $request array() )
Выполнение запроса HEAD по указанному URI, параметрам запроса и телу запроса.
По определению, запросы HEAD идентичны запросам GET, за исключением того, что они не возвращают тело ответа. Это означает, что вся информация и примеры, относящиеся к GET, также применимы к HEAD.
Параметры
- string|array
$uriнеобязательно null - URI для запроса. Либо строка URI, либо массив URI, см. HttpSocket::_parseUri()
- array
$queryнеобязательно array() - Параметры строки запроса, которые нужно добавить к URI
- array
$requestнеобязательно array() - Индексированный массив с индексами, такими как 'method' или uri
Возвращает
mixedРезультат запроса, либо false при ошибке, либо ответ на запрос.
patchsource 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Результат запроса
postsource 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 при ошибке, либо ответ на запрос.
putsource 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Результат запроса
requestsource public
request( string|array $request array() )
Выполнение указанного запроса. HttpSocket::get() и HttpSocket::post() оборачивают этот метод и предоставляют более детальный интерфейс.
Параметры
- string|array
$requestнеобязательно array() - Либо строка URI, либо массив, определяющий хост/uri
Возвращает
mixedfalse при ошибке, HttpSocketResponse при успехе
Выбрасывает
SocketExceptionSocketException
resetsource public
reset( boolean $full true )
Сбрасывает состояние экземпляра HttpSocket в его начальное состояние (до выполнения Object::__construct) или делает то же частично только для свойств request и response.
Параметры
- boolean
$fullнеобязательно true - Если false, то только HttpSocket::response и HttpSocket::request сбрасываются
Возвращает
booleanTrue при успехе
Переопределяет
CakeSocket::reset() setContentResourcesource public
setContentResource( resource|boolean $resource )
Устанавливает ресурс для получения содержимого запроса. Этот ресурс должен поддерживать fwrite.
Параметры
- resource|boolean
$resource - Ресурс или false для отключения использования ресурса
Выбрасывает
SocketExceptionSocketException
urlsource 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
__destructsource public
__destruct( )
Деструктор, используемый для отключения от текущего соединения.
_connectionErrorHandlersource protected
_connectionErrorHandler( integer $code , string $message )
socket_stream_client() не заполняет errNum или $errStr при ошибках подключения, как в случае с ошибкой проверки SSL.
Вместо этого нам нужно обрабатывать эти ошибки вручную.
Параметры
- integer
$code - Код.
- string
$message - Сообщение.
_setSslContextsource protected
_setSslContext( string $host )
Настройка параметров контекста SSL.
Параметры
- string
$host - Имя хоста, к которому осуществляется подключение.
addressessource public
addresses( )
Получает все IP-адреса, связанные с текущим подключением.
Возвращает
arrayIP-адреса
connectsource public
connect( )
Подключает сокет к заданному хосту и порту.
Возвращает
booleanУспех
Выбрасывает
SocketExceptionSocketException
contextsource public
context( )
Получает контекст подключения.
Возвращает
null|arrayNull, если нет подключения, массив, если есть.
disconnectsource public
disconnect( )
Отключает сокет от текущего подключения.
Возвращает
booleanУспех
enableCryptosource 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_cryptolastErrorsource public
lastError( )
Получает последнюю ошибку в виде строки.
Возвращает
string|nullПоследняя ошибка
readsource public
read( integer $length 1024 )
Читает данные из сокета. Возвращает false, если данные недоступны или подключение не установлено.
Параметры
- integer
$lengthнеобязательно 1024 - Необязательная длина буфера для чтения; по умолчанию 1024
Возвращает
mixedДанные сокета
setLastErrorsource public
setLastError( integer $errNum , string $errStr )
Устанавливает последнюю ошибку.
Параметры
- integer
$errNum - Код ошибки
- string
$errStr - Строка ошибки
writesource public
write( string $data )
Записывает данные в сокет.
Параметры
- string
$data - Данные для записи в сокет
Возвращает
booleanУспех
Краткое описание свойств
Наследуемые свойства от CakeSocket
$_baseConfigsource
protected array
Основные параметры конфигурации для подключения к сокету
array( 'persistent' => false, 'host' => 'localhost', 'protocol' => 'tcp', 'port' => 80, 'timeout' => 30 )
$_connectionErrorssource
protected array
Используется для захвата предупреждений о подключении, которые могут возникнуть, например, при ошибках SSL.
array() $_encryptMethodssource
protected array
Содержит все доступные методы шифрования
array( // @codingStandardsIgnoreStart 'sslv2_client' => STREAM_CRYPTO_METHOD_SSLv2_CLIENT, 'sslv3_client' => STREAM_CRYPTO_METHOD_SSLv3_CLIENT, 'sslv23_client' => STREAM_CRYPTO_METHOD_SSLv23_CLIENT, 'tls_client' => STREAM_CRYPTO_METHOD_TLS_CLIENT, 'sslv2_server' => STREAM_CRYPTO_METHOD_SSLv2_SERVER, 'sslv3_server' => STREAM_CRYPTO_METHOD_SSLv3_SERVER, 'sslv23_server' => STREAM_CRYPTO_METHOD_SSLv23_SERVER, 'tls_server' => STREAM_CRYPTO_METHOD_TLS_SERVER // @codingStandardsIgnoreEnd )
$connectedsource
public boolean
Это булево значение содержит текущее состояние класса CakeSocket
false $encryptedsource
public boolean
Истинно, если поток сокета зашифрован после вызова CakeSocket::enableCrypto()
false $lastErrorsource
public array
Эта переменная содержит массив с последним номером ошибки (num) и строкой (str)
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.7/class-HttpSocket.html