Tak z ciekawości zapytam. Bawię się SOAPEM I zrobiłem sobie serwer, którego tworzenie jest opisane
http://phpmajster.blogspot.com/.../soap-podstawy.... Serwer wygląda tak:
<?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"
,array('time_format1'=>'xsd:string','time_format2'=>'xsd:string')
,array('return'=>'xsd:string')
,$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')
{
$result = date($time_format1.$time_format2);
return new soapval('return', 'xsd:string', $result);
}
// odbieramy żądanie
$postdata = isset($postdata) ?
$postdata : '';
// startujemy usługę
$server->service($postdata);
?>
A Aplikacja kliencka tak:
<?php
try
{
$x = @new SoapClient
("http://xxxxxx.pl/test_soap_server.php?wsdl", array('trace' => 1
)); $time = $x->__soapCall
("getTime", array('time_format1' => 'mM','time_format2' => 'Y')); echo "RequestHeader :<br>", htmlentities($x->__getLastRequestHeaders
()), "<br>"; echo "ResponseHeader :<br>", htmlentities($x->__getLastResponseHeaders
()), "<br>"; }
catch (Exception $e)
{
echo $e->getMessage().'<br>'; echo "RequestHeader :<br>", htmlentities($x->__getLastRequestHeaders
()), "<br>"; echo "ResponseHeader :<br>", htmlentities($x->__getLastResponseHeaders
()), "<br>"; }
?>
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?