<?php require_once("nusoap/lib/nusoap.php"); // załączamy bibliotekę nuSOAP $server = new soap_server(); // tworzymy nowy obiekt serwera SOAP $namespace = 'xxxxxx.pl/test_soap_server'; // definiujemy przestrzeń nazw dla XML $server->configureWSDL('mySOAP', $namespace); // konfigurujemy nową usługę $server->wsdl->schemaTargetNamespace = $namespace; // przypisujemy namespace do struktury tworzonego schematu WSDL // rejestrujemy metodę $server->register("getTime" ,$namespace ,false ,'rpc' ,'encoded' ,'To jest nasza testowa metoda zwracająca czas na serwerze' ); // definiujemy metodę function getTime($time_format1='d',$time_format2=' M Y') { return new soapval('return', 'xsd:string', $result); } // odbieramy żądanie // startujemy usługę $server->service($postdata); ?>
A Aplikacja kliencka tak:
<?php try { } catch (Exception $e) { } ?>
Jak widać funkcja getTime ma dwa parametry time_format1 i time_format2 i po uruchomieniu wszystko pięknie działa, ale getLastRequest() zwraca następujące zapytanie
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="xxxxxx.pl/test_soap_server" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:getTime> <time_format xsi:type="xsd:string">mM</time_format> <param1 xsi:type="xsd:string">Y</param1> </ns1:getTime> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
I tu o dziwo następuje zmiana parametrów na odpowiednio time_format i param1. Może mi ktoś wytłumaczyć jak krowie na granicy hahaha jakim cudem wszystko działa tylko w zapytaniu SOAP są inne nazwy parametrów?