Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 PHP и SOAP
  1. Въведение
  2. SOAP - Сървър
  3. SOAP - Клиент
  4. Заключение
Mutatos
     
Автор  Mutatos (07.08.2004 23:24)  съобщение до автора
Погледнат  3849 пъти  добави към любими
Оценка  добави коментар
Гласове  19  изпрати на приятел
Коментари  (0)  абонирай се за PHP
    Страница 2 / 4

 



SOAP - Сървър

Ролята на сървъра е да предостави необходимите функции на клиента за извършване на определени операции. Същевременно той трябва строго да дефинира типовете на данните, който ще получават и връщат функциите. Създайте един файл на име addexample.php със следното съдържание:

CODE
1
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":

CODE
1
http://localhost/addexample.php?wsdl

Това което ще получите е следното:

CODE
1
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
37
38
39
40
<?xml version="1.0" ?>
<
definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
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/"
xmlns:si="http://soapinterop.org/xsd"
xmlns:tns="urn:addexample"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:addexample">
<
message name="addIntegerRequest">
<
part name="a" type="xsd:int" />
<
/message>
<
message name="addIntegerResponse">
<
part name="b" type="xsd:int" />
<
/message>
<
portType name="addexamplePortType">
<
operation name="addInteger">
<
input message="tns:addIntegerRequest" />
<output message="tns:addIntegerResponse"
/>
</
operation>
</
portType>
<
binding name="addexampleBinding" type="tns:addexamplePortType">
<
soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="addInteger">
<soap:operation soapAction="urn:addexample" style="rpc"
/>
<
input>
<
soap:body use="rpc" namespace="Array" encodingStyle="" />
<
/input>
<
output>
<
soap:body use="rpc" namespace="Array" encodingStyle="" />
<
/output>
</
operation>
</
binding>
<
service name="addexample">
<
port name="addexamplePort" binding="tns:addexampleBinding">
<
soap:address location="http://localhost/php/php.exe" />
<
/port>
</
service>
</
definitions>

Сами може да видите как точно се дефинират вашите настройки в този XML документ. Например да погледнем следното:

CODE
1
2
3
<message name="addIntegerRequest">
<
part name="a" type="xsd:int" />
<
/message>

Тук е дефинирано съобщението което ще се изпраща от клиента към сървъра, името на предадената променлива и нейния тип. Повечето от другите настройки са стандартни за всеки един WSDL документ.



 << Предишна страница Следваща страница >> 


Ключови думи: PHP Google webservice nusoap wsdl файл API търсачка soap Simple Object Access Protocol сървър клиент


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 За автора: Mutatos  
Николай Николов се занимава с програмиране на PHP/MySQL повече от 6 години. Заедно с разработката на уеб приложения на PHP, се занимава с Java, XML и Webservices.
   
 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008