2013-09-17 3 views
1

Пример запроса:PHP заголовок аутентификации Soap

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="https://ws.intermedia.net/Account/Management"> 

<soapenv:Header> 
    <AuthentificationInfo> 
    <login>[PLRAdminUserName]</login> 
    <password>[PLRAdminPassword]</password> 
    <accountID>[accountID]</accountID> 
    </AuthentificationInfo> 
</soapenv:Header> 
<soapenv:Body> 
    <GetAccount> 
    <accountID>[accountID]</accountID> 
    </GetAccount> 
</soapenv:Body> 
</soapenv:Envelope> 

WSDL: https://controlpanel.msoutlookonline.net/WebServices/Account/AccountService.asmx?WSDL

PHP:

ini_set("soap.wsdl_cache_enabled", "0"); 

    $wsdl = "https://controlpanel.msoutlookonline.net/WebServices/Account/AccountService.asmx?WSDL"; 
    $ns = 'https://ws.intermedia.net/Account/Management'; 

    $client = new SoapClient($wsdl, array(
     "trace" => 1, 
     "exceptions" => 0 
    )); 

    $login = 'xxxx'; 
    $password = 'xxxx'; 
    $partnerID = 1234; 
    $accountID = 12345678; 

    $headerBody = array('AuthentificationInfo'=>array(
     'login' => $login, 
     'password' => $password, 
     'accountID' => $partnerID 
    )); 
    $header = new SoapHeader($ns, 'AuthentificationInfo', $headerBody); 
    $client->__setSoapHeaders($header); 
    $client->__soapCall("echoVoid", array(null)); 

    $value = $client->GetAccount($accountID); 

Я получаю следующее сообщение об ошибке:

soap:ServerServer was unable to process request. ---> Access denied; Code: 0x0008 

Может кто-нибудь видит Что-то не так с кодом?

ответ

1

Я имел неправильное пространство имен.

Также ответ Mikaël DELSOL помог мне, поскольку мне не нужна часть array('AuthentificationInfo'=>. Также не нуждался: $client->__soapCall("echoVoid", array(null));

Спасибо!

+0

Можете ли вы немного рассказать о неправильном пространстве имен? – bart2puck

5

Попробуйте с

 $headerBody = array(
     'login' => $login, 
     'password' => $password, 
     'accountID' => $partnerID); 
+0

Это не работает. – Dru

+0

Тогда я бы посоветовал вам попытаться создать пакет слоя абстракции в соответствии с этим WSDL на https://www.wsdltophp.com/, вы увидите, что это действительно проще назвать веб-сервис, чем когда-либо. Вы сможете легко установить Soapheader без каких-либо сомнений и вопросов. Дайте мне знать, если вам нужна помощь. –

1

только для тех, кто еще, что может когда-либо запускать через это:

Я изменил

$ns = 'https://ws.intermedia.net/Account/Management'; 

к:

$ns = 'http://schemas.msoutlookonline.net'; 
Смежные вопросы