Spec-Zone.ru › CakePHP 2.10

Класс HttpSocket

Класс CakePHP соединения через сетевой сокет.

Базовый класс ядра для HTTP сетевого взаимодействия. HttpSocket может использоваться как объектно-ориентированная замена cURL во многих местах.

CakeSocket
Extended by HttpSocket
Пакет: Cake\Сеть\Http
Авторские права: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
Лицензия: MIT Лицензия
Расположение: Cake/Network/Http/HttpSocket.php

Краткое описание свойств

  • $_auth protected
    array
    Настройки аутентификации
  • $_contentResource protected
    mixed
    Ресурс для получения содержимого запроса
  • $_proxy protected
    array
    Настройки прокси
  • $config public
    array
    Настройки конфигурации HttpSocket и запросов
  • $quirksMode public
    boolean

    При активации $quirksMode, установив его в значение true, все проверки, предназначенные для соблюдения RFC 2616 (спецификации HTTP/1.1). будут отключены, а дополнительные меры для работы с нестандартными ответами будут включены.

  • $request public
    array
    Содержит информацию о последнем запросе (только для чтения)
  • $response public
    array
    Содержит информацию о последнем ответе (только для чтения)
  • $responseClass public
    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 при ошибке
END_OF_DOCUMENT_MARKER

_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

Возвращает

mixed
false при ошибке, HttpSocketResponse при успехе

Вызывает

SocketException

reset()source public

reset( boolean $full true )

Сбрасывает состояние экземпляра HttpSocket до начального состояния (перед выполнением CakeObject::__construct) или частично сбрасывает свойства request и response.

Параметры

boolean $full необязательно true
Если false, сбрасываются только HttpSocket::response и HttpSocket::request

Возвращает

boolean
True при успехе

Переопределяет

CakeSocket::reset()

setContentResource()source public

setContentResource( resource|boolean $resource )

Устанавливает ресурс для получения содержимого запроса. Этот ресурс должен поддерживать fwrite.

Параметры

resource|boolean $resource
Ресурс или false для отключения использования ресурса

Вызывает

SocketException

url()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

__destruct()source public

__destruct( )

Деструктор, используется для разрыва текущего соединения.

_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=69195
https://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
Имя хоста, к которому осуществляется подключение.

address()source public

address( )

Получает IP-адрес текущего соединения.

Возвращает

string
IP-адрес

addresses()source public

addresses( )

Получает все IP-адреса, связанные с текущим соединением.

Возвращает

array
IP-адреса

connect()source public

connect( )

Подключает сокет к заданному хосту и порту.

Возвращает

boolean
Успех

Вызывает

SocketException

context()source public

context( )

Получает контекст соединения.

Возвращает

null|array
Null, если соединения нет, массив, если есть.

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).

Возвращает

boolean
True в случае успеха

Выбрасывает

InvalidArgumentException
Если выбран неверный метод шифрования.
SocketException
При попытке включить SSL/TLS.

См. также

stream_socket_enable_crypto

host()source public

host( )

Возвращает имя хоста текущего соединения.

Возвращает

string
Имя хоста

lastError()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
Успех

Подробное описание свойств

$_authsource

protected массив

Настройки аутентификации

array()

$_contentResourcesource

protected смешанный тип

Ресурс для получения содержимого запроса

null

$_proxysource

protected массив

Настройки прокси-сервера

array()

$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(),
)

$responsesource

public массив

Содержит информацию о последнем ответе (только для чтения)

null

$responseClasssource

public строка

Имя класса ответа

'HttpSocketResponse'

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API