On this page
Reference
Laminas\Soap\Client
The Laminas\Soap\Client
class simplifies SOAP client development for PHP
programmers, and may be used in either WSDL or non-WSDL mode.
Under WSDL mode, Laminas\Soap\Client
uses a WSDL document to define transport
layer options.
The WSDL description is usually provided by the web service the client will
access. If the WSDL description is not made available, you may want to use
Laminas\Soap\Client
in non-WSDL mode. Under this mode, all SOAP protocol options
have to be set explicitly on the Laminas\Soap\Client
class.
Instantiation
The Laminas\Soap\Client
constructor takes two parameters:
$wsdl
- the URI of a WSDL file.$options
- options for modifying the behavior of the client instance.
Both of these parameters may be set later using the setWsdl($wsdl)
and
setOptions($options)
methods respectively.
Non-WSDL mode requirements
If you use
Laminas\Soap\Client
component in non-WSDL mode, you must set the 'location' and 'uri' options.
The following options are recognized:
soap_version
(soapVersion
) - soap version to use (SOAP_1_1
orSOAP_1_2
).classmap
(classMap
) - maps WSDL types to PHP classes; option must be an array where keys are the WSDL types, and values are the PHP class to which to map.encoding
- internal character encoding (UTF-8 is always used as an external encoding).wsdl
- specifying this option sets the client in WSDL mode. Can be set after-the-fact usingsetWsdl($wsdl)
.uri
- target namespace for the SOAP service (required for non-WSDL-mode; no-op when in WSDL mode).location
- the URL to request (required for non-WSDL-mode; no-op when in WSDL mode).style
- request style (non-WSDL mode only); one ofSOAP_RPC
orSOAP_DOCUMENT
.use
- method to use when encoding messages (non-WSDL mode only); eitherSOAP_ENCODED
orSOAP_LITERAL
.login
andpassword
- login and password for HTTP authentication.proxy_host
,proxy_port
,proxy_login
, andproxy_password
- use when specifying a service behind a proxy server.local_cert
andpassphrase
- HTTPS client certificate authentication options.compression
- compression options; combination ofSOAP_COMPRESSION_ACCEPT
,SOAP_COMPRESSION_GZIP
and/orSOAP_COMPRESSION_DEFLATE
options.
The following demonstrate usage of compression options:
// Accept response compression
$client = new Laminas\Soap\Client(
'some.wsdl',
['compression' => SOAP_COMPRESSION_ACCEPT]
);
// Compress requests using gzip with compression level 5
$client = new Laminas\Soap\Client(
'some.wsdl',
['compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5]
);
// Compress requests using deflate compression
$client = new Laminas\Soap\Client(
"some.wsdl",
['compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE]
);
Performing SOAP Requests
After we've created a Laminas\Soap\Client
instance, we can perform SOAP requests.
Each web service method is mapped to a virtual Laminas\Soap\Client
instance
method which takes parameters with common PHP types.
As an example, given the following server:
class MyClass
{
/**
* This method takes ...
*
* @param integer $inputParam
* @return string
*/
public function method1($inputParam)
{
/* ... */
}
/**
* This method takes ...
*
* @param integer $inputParam1
* @param string $inputParam2
* @return float
*/
public function method2($inputParam1, $inputParam2)
{
/* ... */
}
/* ... */
}
$server = new Laminas\Soap\Server(null, $options);
$server->setClass('MyClass');
$server->handle();
We can write a client as follows:
$client = new Laminas\Soap\Client("MyService.wsdl");
// $result1 is a string
$result1 = $client->method1(10);
// $result2 is a float
$result2 = $client->method2(22, 'some string');