Довольно сложно определить, какой тип структуры ожидает сервер, не видя wsdl, но вот несколько примеров:
Простая аутентификация HTTP
$soap_options = array(
'soap_version' => SOAP_1_2,
'encoding' => 'UTF-8',
'exceptions' => FALSE,
'login' => 'username',
'password' => 'password'
);
try {
$this->soap_client = new SoapClient($this->configuration['wsdl'], $soap_options);
} catch (SoapFault $fault) {
return FALSE;
}
return TRUE;
Для серверов, которые реализуют более продвинутый, настраиваемый метод:
// Namespace for SOAP functions
$ns = 'Namespace/Goes/Here';
// Build an auth array
$auth = array();
$auth['AccountName'] = new SOAPVar($this->account['AccountName'], XSD_STRING, null, null, null, $ns);
$auth['ClientCode'] = new SOAPVar($this->account['ClientCode'], XSD_STRING, null, null, null, $ns);
$auth['Password'] = new SOAPVar($this->account['Password'], XSD_STRING, null, null, null, $ns);
// Create soap headers base off of the Namespace
$headerBody = new SOAPVar($auth, SOAP_ENC_OBJECT);
$header = new SOAPHeader($ns, 'SecuritySoapHeader', $headerBody);
$client->__setSOAPHeaders(array($header));