IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

SOAP Lite et WSDL


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Serbie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Par défaut SOAP Lite et WSDL
    Je joue avec le SOAP::Lite module sur tous les deux côtés de serveur et client. Voilà le server.pl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    use SOAP::Transport::HTTP;
    my $daemon = SOAP::Transport::HTTP::Daemon->new(LocalAddr => localhost, LocalPort => 8000, Reuse => 1)
    	->dispatch_with({"urn:/HelloWorld" => "Hello"})->objects_by_reference("Hello");
    $daemon->handle;
     
     
    package Hello;
    use SOAP::Lite;
     
    sub sayHello
    {
    	my $self = shift;
    	my $s = shift;
    	return "let's say hello...";
    }
    Le client suivant marche sans probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    use SOAP::Lite;
    use SOAP::Transport::HTTP;   
     
    my $server = "http://localhost:8000";
    my $urn = 'urn:/HelloWorld';
    my $client = SOAP::Lite->uri($urn)->proxy($server);
    my $response = $client->sayHello("Hello, World!");
    print $response->result . "\n";
    Mais, si on essaie avec un client qui utilise WSDL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my $soap = SOAP::Lite->service("file:proba.wsdl");
     
    my $response = $soap->sayHello("Hello, World!");
    print $response->result . "\n";
    et le proba.wsdl est défini avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions
    	xmlns="http://schemas.xmlsoap.org/wsdl/"
    	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    	targetNamespace="urn:/HelloWorld"
    	tns="urn:/HelloWorld">
     
    	<!--<types>
    		<s:schema targetNamespace="urn:HelloWorld"></s:schema>
    	</types>-->
     
    	<message name="sayHello">
    		<part name="name" type="xsd:string" />
    		<!--<part name="givenName" type="xsd:string" />-->
    	</message>
    	<message name="sayHelloResponse">
    		<part name="sayHelloResult" type="xsd:string" />
    	</message>
     
    	<portType name="Service1Soap">
    		<operation name="sayHello">
    			<input message="tns:sayHello" />
    			<output message="tns:sayHelloResponse" />
    		</operation>
    	</portType>
     
    	<binding name="Service1Soap" type="tns:Service1Soap">
    		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
    		<operation name="sayHello">
    			<soap:operation soapAction="urn:/HelloWorld#sayHello"/>
    				<input>
    					<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    				</input>
    			<output>
    				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</output>
    		</operation>
    	</binding>
     
    	<service name="HelloWorld">
    		<port name="HelloWorldSoap" binding="tns:Service1Soap">
    			<soap:address location="http://localhost:8000" />
    		</port>
    	</service>
     
    </definitions>
    alors, une erreur est produit:
    Can't locate object method "result" via package "let's say hello..." (perhaps you forgot to load "let's say hello..."?)
    De quoi il s'agit ici?
    La réponse est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <soap:Body>
        <sayHelloResponse xmlns="urn:/HelloWorld">
          <s-gensym9 xsi:type="xsd:string">let's say hello...</s-gensym9>
        </sayHelloResponse>
      </soap:Body>
    </soap:Envelope>
    et je ne vois pas ici aucune problème.
    Quelque idée pourquoi la réponse n'est pas décomposé si le client est initialisé par le fichier de WSDL?
    Merci en avance

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Tu as pu résoudre ton souci ?

Discussions similaires

  1. Incompatibilité http_proxy et SOAP::Lite ?
    Par Gold.strike dans le forum Modules
    Réponses: 0
    Dernier message: 16/04/2008, 13h32
  2. Réponses: 5
    Dernier message: 15/04/2008, 15h52
  3. Appel service Web avec SOAP:Lite
    Par phlux dans le forum Web
    Réponses: 1
    Dernier message: 09/04/2008, 16h56
  4. soap: php vers perl soap::lite
    Par manuds dans le forum Web
    Réponses: 7
    Dernier message: 01/03/2008, 22h40
  5. Consommer un webservice asp.net depuis soap::lite
    Par bleuerouge dans le forum Web
    Réponses: 0
    Dernier message: 11/01/2008, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo