Intereting Posts

NuSoap PHP webservice с заголовками мыла

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

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

Спасибо, mk

$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>'); 

Объект 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 WITHOUT trailing 's' – ваш парень.

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