PHP Webservices SOAP, struttura file wsdl

w_t

Utente Attivo
3 Set 2007
121
0
16
Salve,
stò affrontando per la prima volta i web services SOAP in PHP, stò cercando di capire le basi e la struttura del file ".wsdl", ho trovato cosi tanti esempi e testi che non so a quale affidarmi, per ogni esempio la struttura cambia, i tag cambiano, insomma è tutto diverso...

Vi chiedo una mano per scegliere una guida dove imparare correttamente come realizzare un web services in PHP e SOAP, escludendo "nusoap e soap rest".

Se ci sono più modi di procedere vorrei imparare quello migliore a livello di sicurezza.

Grazie molte.
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Seguo.. è un argomento che mi interessa molto e su cui ho più volte perso la testa cercando di capirci qualcosa..


Saluti G.G.
 

w_t

Utente Attivo
3 Set 2007
121
0
16
Cosa c'è di sbagliato in questo wsdl ?? Funziona ma non credo assolutamente che sia scritto come si deve.

Codice:
<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions 
    name="Library"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="Library"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="Library"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

    <xsd:documentation></xsd:documentation>

    <wsdl:types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="Library">
            <xsd:complexType name="my_value">
                <xsd:sequence>
                    <xsd:element name="my_var" type="xsd:string"></xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:schema>
    </wsdl:types>

    <wsdl:message name="MyFunctionRequest">
        <wsdl:part name="_request_" type="xsd:book"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="MyFunctionResponse">
        <wsdl:part name="_response_" type="tns:string"></wsdl:part>
    </wsdl:message>

    <wsdl:portType name="Library">
        <wsdl:operation name="MyFunction_1">
            <wsdl:input message="tns:MyFunctionRequest"/>
            <wsdl:output message="tns:MyFunctionResponse"/>
        </wsdl:operation>
        <wsdl:operation name="MyFunction_2">
            <wsdl:input message="tns:MyFunctionRequest"/>
            <wsdl:output message="tns:MyFunctionResponse"/>
        </wsdl:operation>
    </wsdl:portType>

    <wsdl:binding name="Library" type="tns:Library">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="MyFunction_1">
            <soap:operation soapAction="http://127.0.0.1/ws_soap/server.php"/>
            <wsdl:input>
                <soap:body use="literal" namespace="Library"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" namespace="Library"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="MyFunction_2">
            <soap:operation soapAction="http://127.0.0.1/ws_soap/server.php"/>
            <wsdl:input>
                <soap:body use="literal" namespace="Library"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" namespace="Library"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="Library">
        <wsdl:port binding="tns:Library" name="BookLibrary">
            <soap:address location="http://127.0.0.1/ws_soap/server.php"/>
        </wsdl:port>
    </wsdl:service>

</wsdl:definitions>

Questo è il server:

Codice:
ini_set('soap.wsdl_cache_enabled', 0);

class MyClass
{
    public function MyFunction_1($my_value_1)
    {
        return $my_value_1;
    }
   
    public function MyFunction_2($my_value_2)
    {
        return $my_value_2;
    }
}

$Service = new MyClass();

$server = new SoapServer("ws.wsdl");
$server->setObject($Service);
$server->handle();

Questo è il client:

Codice:
ini_set('soap.wsdl_cache_enabled', 0);
ini_set('soap.wsdl_cache_ttl', 0);

$wsdl = 'http://127.0.0.1/ws_soap/server.php/method?WSDL';

$options = array(
                'uri'=>'http://schemas.xmlsoap.org/soap/envelope/',
                'style'=>SOAP_RPC,
                'use'=>SOAP_ENCODED,
                'soap_version'=>SOAP_1_1,
                'cache_wsdl'=>WSDL_CACHE_NONE,
                'connection_timeout'=>15,
                'trace'=>true,
                'encoding'=>'UTF-8',
                'exceptions'=>true,
                );

$objClient = new SoapClient($wsdl, $options);

try
{
    if(isset($objClient))
    {
        $resp1 = $objClient->MyFunction_1("Ciao ");
        $resp2 = $objClient->MyFunction_2(" sono Mario");
       
        echo $resp1.$resp2;
    }
}
catch(SoapFault $ex)
{
    echo var_dump($ex);
}
 

Dell Support

Nuovo Utente
30 Mag 2018
1
0
0
Codice:
<? xml version = "1.0" encoding = "UTF-8"?>

<Wsdl: definitions
    name = "Library"
    xmlns: xsd = "http://www.w3.org/2001/XMLSchema"
    targetNamespace = "Library"
    xmlns: soap = "http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns: tns = "Library"
    xmlns: wsdl = "http://schemas.xmlsoap.org/wsdl/">

    <Xsd: documentation> </ xsd: documentation>

    <Wsdl: types>
        <xsd: schema xmlns: xsd = "http://www.w3.org/2001/XMLSchema" targetNamespace = "Library">
            <xsd: complexType name = "my_value">
                <Xsd: sequence>
                    <xsd: element name = "my_var" type = "xsd: string"> </ xsd: element>
                </ Xsd: sequence>
            </ Xsd: complexType>
        </ Xsd: schema>
    </ Wsdl: types>

    <wsdl: message name = "MyFunctionRequest">
        <wsdl: part name = "_ request_" type = "xsd: book"> </ wsdl: part>
    </ Wsdl: message>
    <wsdl: message name = "MyFunctionResponse">
        <wsdl: part name = "_ response_" type = "tns: string"> </ wsdl: part>
    </ Wsdl: message>

    <wsdl: portType name = "Library">
        <wsdl: operation name = "MyFunction_1">
            <wsdl: input message = "tns: MyFunctionRequest" />
            <wsdl: output message = "tns: MyFunctionResponse" />
        </ Wsdl: operation>
        <wsdl: operation name = "MyFunction_2">
            <wsdl: input message = "tns: MyFunctionRequest" />
            <wsdl: output message = "tns: MyFunctionResponse" />
        </ Wsdl: operation>
    </ Wsdl: portType>

    <wsdl: binding name = "Library" type = "tns: Library">
        <soap: binding style = "rpc" transport = "http://schemas.xmlsoap.org/soap/http" />
        <wsdl: operation name = "MyFunction_1">
            <soap: operation soapAction = "http://127.0.0.1/ws_soap/server.php" />
            <Wsdl: input>
                <soap: body use = "literal" namespace = "Library" />
            </ Wsdl: input>
            <Wsdl: output>
                <soap: body use = "literal" namespace = "Library" />
            </ Wsdl: output>
        </ Wsdl: operation>
        <wsdl: operation name = "MyFunction_2">
            <soap: operation soapAction = "http://127.0.0.1/ws_soap/server.php" />
            <Wsdl: input>
                <soap: body use = "literal" namespace = "Library" />
            </ Wsdl: input>
            <Wsdl: output>
                <soap: body use = "literal" namespace = "Library" />
            </ Wsdl: output>
        </ Wsdl: operation>
    </ Wsdl: binding>

    <wsdl: service name = "Library">
        <wsdl: port binding = "tns: Library" name = "BookLibrary">
            <soap: address location = "http://127.0.0.1/ws_soap/server.php" />
        </ Wsdl: port>
    </ Wsdl: service>

</ Wsdl: definitions>
[/ Code]

This is the server:

[Code]
ini_set ('soap.wsdl_cache_enabled', 0);

class MyClass
{
    public function MyFunction_1 ($ my_value_1)
    {
        return $ my_value_1;
    }
 
    public function MyFunction_2 ($ my_value_2)
    {
        return $ my_value_2;
    }
}

$ Service = new MyClass ();

$ server = new SoapServer ("ws.wsdl");
$ Server-> setObject ($ service);
$ Server-> handle ();
[/ Code]

This is the client:

[Code]
ini_set ('soap.wsdl_cache_enabled', 0);
ini_set ('soap.wsdl_cache_ttl', 0);

$ wsdl = 'http://127.0.0.1/ws_soap/server.php/method?WSDL';

$ options = array (
                'Uri' => 'http://schemas.xmlsoap.org/soap/envelope/',
                'Style' => SOAP_RPC,
                'Use' => SOAP_ENCODED,
                'Soap_version' => SOAP_1_1,
                'Cache_wsdl' => WSDL_CACHE_NONE,
                'Connection_timeout' => 15,
                'Trace' => true,
                'Encoding' => 'UTF-8',
                'Exceptions' => true,
                );

$ objClient = new SoapClient ($ wsdl, $ options);

try
{
    if (isset ($ objClient))
    {
        $ resp1 = $ objClient-> MyFunction_1 ("Hello");
        $ resp2 = $ objClient-> MyFunction_2 ("sono Mario");
   
        echo $ resp1. $ resp2;
    }
}
catch (SoapFault $ ex)
{
    echo var_dump ($ ex);
}
[/ Code] [/ QUOTE]
 Read this comment This is very useful, I also have a suggestion for those people who want to face the problem or do not be able to do this. simply take a help of https://dellsupports.org/ to solve the problem properly. If anyone faces any problem related to Dell they can also help.
 
Ultima modifica:

LinuxOhYeah

Utente Attivo
26 Nov 2016
186
7
18
le basi e la struttura del file ".wsdl"
Potresti iniziare con WSDL: scopriamo cos'è il Web Services Description Language uno degli articoli che trovi su https://www.mrw.it/xml/articoli/

Trovi anche: SOAP: cos'è e come funziona

Buona lettura :)

C'è anche per Android: Far dialogare la nostra app con un web service tramite WSDL e SOAP

e https://www.mrw.it/php/usare-curl-php-interagire-risorse-remote_12050.html -> Inviare dei dati nel formato JSON ad un web-service remoto
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
M Visulizzare immagine con php PHP 4
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1

Discussioni simili