SOAP - Сървър
Ролята на сървъра е да предостави необходимите функции на клиента за извършване на определени операции. Същевременно той трябва строго да дефинира типовете на данните, който ще получават и връщат функциите. Създайте един файл на име
addexample.php със следното съдържание:
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| <?php
// вмъкване на nusoap.php
require_once('nusoap.php');
// създаване инстанция на сървъра
$server = new soap_server();
// инициализиране на WSDL файла
$server->configureWSDL('addexample', 'urn:addexample');
// дефиниране на WSDL файла
$server->wsdl->schemaTargetNamespace = 'urn:addexample';
// регистриране на функцията за събиране на числата
$server->register('addInteger', // име на функцията
array('a' => 'xsd:int'), // тип и име на първия параметър
array('b' => 'xsd:int'), // тип и име на втория параметър
array('return' => 'xsd:int'), // тип на връщаната информация
'urn:addexample', // namespace
'urn:addexample#addInteger', //soap акцията
'rpc', // стил на обмяната на данните
'encoded', // кодировка
'Add two integer' // коментар за документацията
);
// дефиниране на функцията
function addInteger($a, $b)
{
return $a + $b;
}
// запитването от клиента предадено чрез POST
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?> |
На кратко, този файл съдържа една функция
addInteger, която приема като параметри две цели числа а и b, които трябва да са от тип
"int" и връща стойност отново от тип "int". Създаденият
WSDL файл съдържа точно тази информация, която е достатъчна за един клиент, независимо на какъв програмен език е написан той!
Сигурно се питате, къде точно се намира или се генерира този WSDL документ. За тази цел трябва да стартирате вашият "server":
CODE1
| http://localhost/addexample.php?wsdl |
Това което ще получите е следното:
CODE
Сами може да видите как точно се дефинират вашите настройки в този XML документ. Например да погледнем следното:
CODE1
2
3
| <message name="addIntegerRequest">
<part name="a" type="xsd:int" />
</message> |
Тук е дефинирано съобщението което ще се изпраща от клиента към сървъра, името на предадената променлива и нейния тип. Повечето от другите настройки са стандартни за всеки един WSDL документ.