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:
  1. <?php
  2.  
  3. require_once("nusoap/lib/nusoap.php");
  4.  
  5. // załączamy bibliotekę nuSOAP
  6.  
  7.  
  8.  
  9. $server = new soap_server(); // tworzymy nowy obiekt serwera SOAP
  10.  
  11. $namespace = 'xxxxxx.pl/test_soap_server'; // definiujemy przestrzeń nazw dla XML
  12.  
  13.  
  14.  
  15. $server->configureWSDL('mySOAP', $namespace); // konfigurujemy nową usługę
  16.  
  17. $server->wsdl->schemaTargetNamespace = $namespace; // przypisujemy namespace do struktury tworzonego schematu WSDL
  18.  
  19.  
  20.  
  21. // rejestrujemy metodę
  22.  
  23. $server->register("getTime"
  24.  
  25. ,array('time_format1'=>'xsd:string','time_format2'=>'xsd:string')
  26.  
  27. ,array('return'=>'xsd:string')
  28.  
  29. ,$namespace
  30.  
  31. ,false
  32.  
  33. ,'rpc'
  34.  
  35. ,'encoded'
  36.  
  37. ,'To jest nasza testowa metoda zwracająca czas na serwerze'
  38.  
  39. );
  40.  
  41.  
  42.  
  43. // definiujemy metodę
  44.  
  45. function getTime($time_format1='d',$time_format2=' M Y')
  46.  
  47. {
  48.  
  49. $result = date($time_format1.$time_format2);
  50.  
  51. return new soapval('return', 'xsd:string', $result);
  52.  
  53. }
  54.  
  55.  
  56.  
  57. // odbieramy żądanie
  58.  
  59. $postdata = file_get_contents("php://input");
  60.  
  61. $postdata = isset($postdata) ? $postdata : '';
  62.  
  63.  
  64.  
  65. // startujemy usługę
  66.  
  67. $server->service($postdata);
  68.  
  69. ?>

A Aplikacja kliencka tak:
  1. <?php
  2. try
  3. {
  4. $x = @new SoapClient("http://xxxxxx.pl/test_soap_server.php?wsdl", array('trace' => 1));
  5. echo 'OK<br>';
  6. $time = $x->__soapCall("getTime", array('time_format1' => 'mM','time_format2' => 'Y'));
  7. echo $time. '<br>';
  8. echo "Request :<br>", htmlentities($x->__getLastRequest()), "<br>";
  9. echo "RequestHeader :<br>", htmlentities($x->__getLastRequestHeaders()), "<br>";
  10. echo "Response :<br>", htmlentities($x->__getLastResponse()), "<br>";
  11. echo "ResponseHeader :<br>", htmlentities($x->__getLastResponseHeaders()), "<br>";
  12. }
  13. catch (Exception $e)
  14. {
  15. echo 'błąd<br>';
  16. echo $e->getMessage().'<br>';
  17. echo "Request :<br>", htmlentities($x->__getLastRequest()), "<br>";
  18. echo "RequestHeader :<br>", htmlentities($x->__getLastRequestHeaders()), "<br>";
  19. echo "Response :<br>", htmlentities($x->__getLastResponse()), "<br>";
  20. echo "ResponseHeader :<br>", htmlentities($x->__getLastResponseHeaders()), "<br>";
  21. }
  22.  
  23. ?>


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
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <SOAP-ENV:Envelope
  3. xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  4. xmlns:ns1="xxxxxx.pl/test_soap_server"
  5. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7. xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
  8. SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  9. <SOAP-ENV:Body>
  10. <ns1:getTime>
  11. <time_format xsi:type="xsd:string">mM</time_format>
  12. <param1 xsi:type="xsd:string">Y</param1>
  13. </ns1:getTime>
  14. </SOAP-ENV:Body>
  15. </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?