SoapClient::SoapClient
(PHP 5, PHP 7)
SoapClient::SoapClient — Конструктор SoapClient
Описание
Конструктор создает объекты SoapClient
в режиме WSDL
или не-WSDL
.
Список параметров
-
wsdl
-
URI файла
WSDL
илиnull
, если работа происходит в режимене-WSDL
.Замечание:
Во время разработки кеширование WSDL можно отключить, используя настройку
soap.wsdl_cache_ttl
в php.ini, иначе изменения, сделанные в WSDL файле, не будут иметь эффекта до тех пор, пока не истечет время, указанное вsoap.wsdl_cache_ttl
. -
options
-
Массив настроек. Если работа происходит в режиме WSDL, то этот параметр необязательный. Если в не-WSDL режиме, то должны быть установлены опции
location
иuri
, гдеlocation
- URL сервера SOAP, к которому отправляется запрос, аuri
- целевое пространство имен SOAP-сервиса.Опции
style
иuse
используются только в не-WSDL режиме. В режиме WSDL они поступают из WSDL-файла.Опция
soap_version
должна быть равна либоSOAP_1_1
, либоSOAP_1_2
, чтобы использовать соответственно SOAP 1.1 или 1.2. Если параметр пропущен, то используется 1.1.Для HTTP-аутентификации могут быть использованы опции
login
иpassword
для предоставления учетных данных. Для реализации HTTP-соединения через прокси-сервер доступны настройкиproxy_host
,proxy_port
,proxy_login
иproxy_password
. Для аутентификации сертификата клиента HTTPS используются опцииlocal_cert
иpassphrase
. Аутентификация может быть предоставлена в опцииauthentication
. Метод аутентификации может бытьSOAP_AUTHENTICATION_BASIC
(по умолчанию) илиSOAP_AUTHENTICATION_DIGEST
.Опция
compression
позволяет использовать сжатие запросов и ответов HTTP SOAP.Опция
encoding
определяет внутреннюю кодировку. Опция не меняет кодировку SOAP-запросов (она всегда utf-8), но преобразует строки в нее.Опция
trace
включает отслеживание запроса и в случае ошибки можно получить обратную трассировку. По умолчанию имеет значениеfalse
.Опция
classmap
может использоваться для сопоставления некоторых WSDL-типов с PHP-классами. Опция должна представлять собой массив, в качестве ключей которого указаны WSDL-типы, а в качестве значений - имена классов PHP.Установленная булевая опция
trace
позволяет использовать следующие методы: SoapClient->__getLastRequest, SoapClient->__getLastRequestHeaders, SoapClient->__getLastResponse и SoapClient->__getLastResponseHeaders.Опция
exceptions
принимает логическое значение, определяющее, будут ли SOAP-ошибки бросать исключения типа SoapFault.Опция
connection_timeout
определяет тайм-аут в секундах для соединения с SOAP-сервисом. Опция не устанавливает тайм-аут для сервисов с медленными ответами. Для ограничения времени ожидания вызовов используется default_socket_timeout.Опция
typemap
является массивом сопоставления типов. Массив сопоставления типов - это массив с ключамиtype_name
,type_ns
(URI пространства имен),from_xml
(функция обратного вызова принимает один строковый параметр) иto_xml
(функция обратного вызова принимает объект в качестве параметра).Опция
cache_wsdl
принимает одно из значений:WSDL_CACHE_NONE
,WSDL_CACHE_DISK
,WSDL_CACHE_MEMORY
илиWSDL_CACHE_BOTH
.Опция
user_agent
определяет строку для использования в заголовкеUser-Agent
.Опция
stream_context
- это resource для context.Опция
features
является битовой маскойSOAP_SINGLE_ELEMENT_ARRAYS
,SOAP_USE_XSI_ARRAY_TYPE
,SOAP_WAIT_ONE_WAY_CALLS
.Опция
keep_alive
является логическим значением, определяющим, какой заголовок отправлять:Connection: Keep-Alive
илиConnection: close
.Опция
ssl_method
должна быть равнойSOAP_SSL_METHOD_TLS
,SOAP_SSL_METHOD_SSLv2
,SOAP_SSL_METHOD_SSLv3
илиSOAP_SSL_METHOD_SSLv23
.
Ошибки
SoapClient::SoapClient() генерирует ошибку
E_ERROR
, если опции location
и
uri
не передаются в не-WSDL режиме.
Исключение SoapFault будет выбрасываться, если
wsdl
URI не может быть загружен.
Примеры
Пример #1 Пример использования SoapClient::SoapClient()
<?php
$client = new SoapClient("some.wsdl");
$client = new SoapClient("some.wsdl", array('soap_version' => SOAP_1_2));
$client = new SoapClient("some.wsdl", array('login' => "some_name",
'password' => "some_password"));
$client = new SoapClient("some.wsdl", array('proxy_host' => "localhost",
'proxy_port' => 8080));
$client = new SoapClient("some.wsdl", array('proxy_host' => "localhost",
'proxy_port' => 8080,
'proxy_login' => "some_name",
'proxy_password' => "some_password"));
$client = new SoapClient("some.wsdl", array('local_cert' => "cert_key.pem"));
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/",
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL));
$client = new SoapClient("some.wsdl",
array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP));
$client = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1'));
class MyBook {
public $title;
public $author;
}
$client = new SoapClient("books.wsdl", array('classmap' => array('book' => "MyBook")));
?>