theiconic / ntlm-soap
PHP Library for consuming SOAP web services using NTLM authentication
Requires
- php: ^8.0
- ext-curl: *
- ext-soap: *
- guzzlehttp/guzzle: ^7.15.2
- symfony/filesystem: ^4.1|^5.0
- symfony/options-resolver: ^4.1|^5.0
Requires (Dev)
- mockery/mockery: ~1.0
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^8.4
- spatie/phpunit-watcher: ^1.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-26 03:02:03 UTC
README
The purpose of this thin PHP library is to provide an easy and handy way to communicate with SOAP services that are using NTLM authentication protocol.
Requirements
NTLM is negotiated by cURL, so the Guzzle client must use the cURL handler and PHP's libcurl must be built with NTLM
support (curl_version()['features'] & CURL_VERSION_NTLM). Recent libcurl builds can ship without it.
Example
Using a local WSDL file:
<?php use TheIconic\NtlmSoap\Client\NtlmSoap; use GuzzleHttp\Client; $client = new Client(); $soapClient = new NtlmSoap( $client, null, [ 'username' => 'your-username', 'password' => 'your-password', 'wsdl' => 'path-of-your-local-wsdl-file', 'wsdl_options' => [ 'location' => 'http://my-location.com', 'cache_wsdl' => WSDL_CACHE_NONE, ], ] ); $response = $soapClient->soapMethod([ 'methodParameter' => null, ]);
In order to use a remote WSDL definition, you need a fileystem cache adapter. The client will fetch the WSDL once and store it on your filesystem. Example:
<?php use Symfony\Component\Filesystem\Filesystem; use TheIconic\NtlmSoap\Cache\FilesystemCache; use TheIconic\NtlmSoap\Client\NtlmSoap; use GuzzleHttp\Client; $cacheRootDir = __DIR__.'/cache'; $defaultTtl = 3600; // cache the WSDL files for 1 hour $client = new Client(); $cache = new FilesystemCache(new Filesystem(), $cacheRootDir, $defaultTtl); $soapClient = new NtlmSoap( $client, $cache, [ 'username' => 'your-username', 'password' => 'your-password', 'wsdl' => 'http://myurl.com/remote/wsdl', ] ); $response = $soapClient->soapMethod();