2011-10-09 2 views
1

Мне интересно, как реализовать аутентификацию заголовка мыла на сервере мыльной веб-службы с использованием библиотеки NuSoap.NuSoap PHP webservice с заголовками мыла

Я видел много примеров о клиенте NuSoap, но хочу реализовать это на сервере.

Спасибо, ок

ответ

0
$client->setHeaders('<wsse:Security S:mustUnderstand="1"> 
      <wsu:Timestamp xmlns:ns15="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity" xmlns:ns14="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" xmlns:ns13="http://www.w3.org/2003/05/soap-envelope" wsu:Id="_1"> 
       <wsu:Created>createdDate</wsu:Created> 
       <wsu:Expires>expireDate</wsu:Expires> 
      </wsu:Timestamp> 
      <wsse:UsernameToken xmlns:ns15="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity" xmlns:ns14="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" xmlns:ns13="http://www.w3.org/2003/05/soap-envelope" wsu:Id="uuid_25007e25-6a0a-4a0c-9c3e-0d332f262cdc"> 
       <wsse:Username>username</wsse:Username> 
       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password> 
      </wsse:UsernameToken> 
     </wsse:Security>'); 
0

Объект SoapServer содержит заголовок мыла в качестве ассоциативного массива под свойством «RequestHeader», так что если вы можете выяснить способ получить экземпляр сервера из ваша функция, вы сможете получить soapHeader.

<?php 
require_once './nusoap/nusoap.php'; 

//Declare the server as a global, for brevity 
global $server; 

//Instantiate, configure and run as usual 
$server = new nusoap_server(); 
$server->configureWSDL("namespace...", "..."); 
$server->register("myHandler"); 
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : ''); 

//My handling function: 
function myHandler() { 
    //Get your server instance: 
    global $server; 

    //Abra Kadabra alakazam! your soap header :D 
    var_dump($server->requestHeader); 
} 

Очевидно, что для этого требуется более совершенная практика кодирования, но у вас есть идея. Также whatchout для requestHeader s свойство, так как оно содержит заголовки HTTP, а не заголовок SOAP, помните: requestHeader БЕЗ конечного 's' - ваш парень.

Надеюсь, это поможет