2010-04-04 6 views
0

У меня сейчас большая проблема, мне нужно создать свои собственные веб-сервисы, но я действительно не знаю, как, может кто-нибудь мне помочь?PHP5 и SOAP/WSDL?

Возможно, ссылка на простой способ сделать код WSDL/SOAP? Я попробовал NuSoap, но я не могу получить окончательный белый код, пожалуйста, помогите мне. :)

ответ

1

очень простой пример SOAP веб-сервиса:

Серверная часть (server.php):

<?php 
function getRot13($pInput) { 
    $rot = str_rot13($pInput); 
    return($rot); 
} 

function getMirror($pInput) { 
    $mirror = strrev($pInput); 
    return $mirror; 
} 

ini_set("soap.wsdl_cache_enabled", "0"); 

$server = new SoapServer('scramble.wsdl'); 

$server->addFunction("getRot13"); 
$server->addFunction("getMirror"); 

$server->handle(); 

Клиентская часть (client.php):

<?php 
// turn off the WSDL cache 
ini_set("soap.wsdl_cache_enabled", "0"); 

$client = new SoapClient("http://localhost/test/scramble.wsdl"); 

$origtext = "mississipi"; 

print("The original text : $origtext\n"); 

$mirror = $client->getMirror($origtext); 
print("The mirrored text : $mirror\n"); 

$scramble = $client->getRot13($mirror); 
print("The scrambled text : $scramble\n"); 

И, наконец, файл WSDL (scramble.wsdl):

<?xml version ='1.0' encoding ='UTF-8' ?> 
<definitions name='Scramble' 
    targetNamespace='http://localhost/test/scramble.wdsl' 
    xmlns:tns='http://localhost/test/scramble.wdsl' 
    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' 
    xmlns='http://schemas.xmlsoap.org/wsdl/'> 

<message name='getRot13Request'> 
    <part name='symbol' type='xsd:string'/> 
</message> 
<message name='getRot13Response'> 
    <part name='Result' type='xsd:string'/> 
</message> 
<message name='getMirrorRequest'> 
    <part name='symbol' type='xsd:string'/> 
</message> 
<message name='getMirrorResponse'> 
    <part name='Result' type='xsd:string'/> 
</message> 

<portType name='ScramblePortType'> 
    <operation name='getRot13'> 
    <input message='tns:getRot13Request'/> 
    <output message='tns:getRot13Response'/> 
    </operation> 
    <operation name='getMirror'> 
    <input message='tns:getMirrorRequest'/> 
    <output message='tns:getMirrorResponse'/> 
    </operation>  
</portType> 

<binding name='ScrambleBinding' type='tns:ScramblePortType'> 
    <soap:binding style='rpc' 
    transport='http://schemas.xmlsoap.org/soap/http'/> 
    <operation name='getRot13'> 
    <soap:operation soapAction='urn:localhost-scramble#getRot13'/> 
    <input> 
     <soap:body use='encoded' namespace='urn:localhost-scramble' 
     encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </input> 
    <output> 
     <soap:body use='encoded' namespace='urn:localhost-scramble' 
     encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </output> 
    </operation> 
    <operation name='getMirror'> 
    <soap:operation soapAction='urn:localhost-scramble#getMirror'/> 
    <input> 
     <soap:body use='encoded' namespace='urn:localhost-scramble' 
     encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </input> 
    <output> 
     <soap:body use='encoded' namespace='urn:localhost-scramble' 
     encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </output> 
    </operation>  
</binding> 

<service name='ScrambleService'> 
    <port name='ScramblePort' binding='ScrambleBinding'> 
    <soap:address location='http://localhost/test/server.php'/> 
    </port> 
</service> 
</definitions> 

В этом примере предполагается, что вы положили эти три файла в директории, которая доступна из http://localhost/test и если вы используете другое место, найти и заменить на правильный URL.

Также требуется установить расширение SOAP PHP. Удачи!