Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [wsdl + soap + php] problema con i tipi

    ciao a tutti,
    ho scritto un client stupidissimo in php che chiama una funzione passando come parametro un intero.
    Il server non fa altro che sommare 1 al parametro passato dal client e fare un return di questa somma.
    la comunicazione passa attraverso un wsdl in cui ho appositamente scritto che l'input e' di tipo string, ma non mi ritorna nessun errore, anzi , fa la somma e mi ritorna un intero.... come mai???

    utilizzo la libreria PEAR::SOAP per la comunicazione client-server.

    codice:
    <?xml version="1.0"?>
    <definitions name="HelloServer" targetNamespace="urn:HelloServer"
    
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
      xmlns:tns="urn:HelloServer"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns="http://schemas.xmlsoap.org/wsdl/"
    >
    <types>
    </types>
    
    <message name="sayHelloRequest">
            <part name="inputString" type="xsd:string"/>
    </message>
    
    <message name="sayHelloResponse">
    <part name="outputString" type="xsd:string"/>
    </message>
    
    <portType name="HelloServerPort">
    
    <operation name="sayHello">
    <input message="tns:sayHelloRequest"/>
    <output message="tns:sayHelloResponse"/>
    </operation>
    </portType>
    
    <binding name="HelloServerBinding" type="tns:HelloServerPort">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    
    <operation name="sayHello">
    <soap:operation soapAction="urn:HelloServer#HelloServer#sayHello"/>
    
    <input>
    <soap:body use="encoded" namespace="urn:HelloServer" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </input>
    
    <output>
    <soap:body use="encoded" namespace="urn:HelloServer" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </output>
    </operation>
    </binding>
    
    <service name="HelloServerService">
    <documentation/>
    
    <port name="HelloServerPort" binding="tns:HelloServerBinding">
    <soap:address location="http://localhost/tesi/prova/server_wsdl.php"/>
    </port>
    </service>
    </definitions>
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  2. #2
    specificando meglio, il controllo sui tipi viene fatto solo lato server (server.php) settando in modo appropriato la variabile dispatch_map. Quello che mi aspettavo era invece che il controllo venisse fatto nel wsdl, cioe' che il wsdl definisse un'interfaccia per il server e che il server fosse obbligato a seguirla (tipo interfaccia java).
    Mi stavo chiedendo se non ci fosse un modo per dire al server.php di seguiire l'interfaccia wsdl
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.