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

Bibliothèques et frameworks PHP Discussion :

[Web Service] SOAP serveur PHP client J2EE


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut [Web Service] SOAP serveur PHP client J2EE
    Bonjour
    Après de longue heures de recherche et de modification j'ai réussi a faire tourner un exemple SOAP "serveur PHP"+" client J2EE".
    Voici le codes source pour ceux qui les intéresses.
    crée un dossier sous wamp ou EasyPhP
    www/soap/server/

    crée le fichier
    index.php
    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
    <?php
    // On désactive la mise en cache du wsdl (pour le test)
    ini_set('soap.wsdl_cache_enabled', 0);
     
    // Inclusion de la classe contenant l'implémentation des fonctions du Service Web
    include('WebServiceFirst.php');
     
    // Tentative d'instanciation du serveur SOAP
    try {
    	$server = new SoapServer('server.wsdl',  array('trace' => 1, 'soap_version' => SOAP_1_1));     
        $server -> setclass('WebServiceFirst');     
    }
    catch (Exception $e) {
        //TODO  Traitement en cas d'exception, pour l'instant on l'affiche tel quel...
        echo $e;
        exit();	  
    }
     
    // Appel du Service Web (requête POST uniquement autorisée)  
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     
        // Prise en charge de la requête
    	$server -> handle();	     
    }
    // Sinon, on affiche la liste des fonctions du serveur SOAP et un lien vers le WSDL
    else {
    	echo 'Web Service First.<br />';
    	echo '<a href="server.wsdl">WSDL</a><br />';
        echo 'Fonctions :';    
        echo '<ul>';
        foreach($server -> getFunctions() as $func) {        
            echo '<li>' , $func , '</li>';
        }
        echo '</ul>'; 
    }  
    ?>
    crée le fichier
    server.wsdl
    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
    <?xml version="1.0" encoding="UTF-8" ?>
    <definitions name='ERIC'
        targetNamespace='http://127.0.0.1/soap/server/server.wsdl'
        xmlns:tns='http://127.0.0.1/soap/server/server.wsdl'
        xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
        xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
        xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
        xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
        xmlns='http://schemas.xmlsoap.org/wsdl/'>
     
    <wsdl:message name='getHelloWorldRequest'>
    </wsdl:message>
    <wsdl:message name='getHelloWorldResponse'>
    <wsdl:part name='chaineRetour' type='xsd:string'/>
    </wsdl:message> 
     
    <portType name='ERIC_PortType'>
        <wsdl:operation name='getHelloWorld'>
            <wsdl:input  message='tns:getHelloWorldRequest'/>
            <wsdl:output message='tns:getHelloWorldResponse'/>
        </wsdl:operation>
    </portType>
     
    <binding name='ERIC_Binding'  type='tns:ERIC_PortType'>
        <soap:binding style='rpc' 
            transport='http://schemas.xmlsoap.org/soap/http' />
          <wsdl:operation name='getHelloWorld'>
              <soap:operation
                 soapAction='getHelloWorld'/>
            <wsdl:input>
                <soap:body use='literal' namespace='http://www.ericmery.fr/ns'/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use='literal' namespace='http://www.ericmery.fr/ns'/>
            </wsdl:output>
        </wsdl:operation>
    </binding>
     
    <service name='WebServiceFirst'>
        <documentation>Web Service First</documentation>
        <port name='ERIC_Port' binding='tns:ERIC_Binding'>
        	<soap:address location='http://127.0.0.1/soap/server/'/>
        </port>
     </service> 
     
    </definitions>
    crée le fichier WebServiceFirst.php
    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
    <?php
    class WebServiceFirst	{
     
    	/**
    	 * Retourne la chaine 'Hello World'
    	 * 
    	 * @access public
    	 * @return string
    	 */
    	public function getHelloWorld()	{
     
    		return  "Hello World";
     
    	}	
    }
    ?>
    coté éclipse crée nouveau java project : onjava
    crée nouveau package :onjava
    crée une nouvelle classe CalcClient

    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
    50
    51
    52
    53
    54
    55
    package onjava;
     
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import org.apache.soap.*;
    import org.apache.soap.encoding.SOAPMappingRegistry;
    import org.apache.soap.encoding.soapenc.ArraySerializer;
    import org.apache.soap.encoding.soapenc.StringDeserializer;
    import org.apache.soap.rpc.*;
    import org.apache.soap.util.xml.QName;
     
    public class CalcClient {
     
      public static void main(String[] args) throws Exception {
     
        URL url = new URL ("http://localhost/soap/server/index.php");   
     
        // Creation de l'appel
     
        Call call = new Call();
        call.setTargetObjectURI("urn:WebServiceFirst");
        call.setMethodName("getHelloWorld");
        call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
     
        //serialistation du type de retour en string
     
        SOAPMappingRegistry soapMappingRegistry = new SOAPMappingRegistry();
        soapMappingRegistry.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("", "chaineRetour"),
                                     null, null, new StringDeserializer());
        call.setSOAPMappingRegistry(soapMappingRegistry);
     
     
        // make the call: note that the action URI is empty because the
        // XML-SOAP rpc router does not need this. This may change in the
        // future.
        //appel
        Response resp = call.invoke(url, "" ); 
     
        // verifier la réponse.
        if ( resp.generatedFault() ) {
     
          Fault fault = resp.getFault ();
          System.out.println("The call failed: ");
          System.out.println("Fault Code   = " + fault.getFaultCode());
          System.out.println("Fault String = " + fault.getFaultString());
     
        }
        else {
     
          Parameter result = resp.getReturnValue();
          System.out.println(result.getValue());
        }
      }
    }
    pour que le code tourne il faut ajouter les jar suivant :
    mail;soap;activation;xerces

    bonne chance

  2. #2
    Membre confirmé Avatar de Spont
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2003
    Messages : 125
    Par défaut
    Bonjour Mejdi,

    Je voulais te demander comment tu as pu générer le "server.wsdl" ou bien est ce que c'est toi qui la écrit.
    Sinon, as tu un tutorial ou des documents efficaces pour le développement d'un tel web service.

    Merci d'avantage.

  3. #3
    mon_nom_est_personne
    Invité(e)
    Par défaut
    pour l'ecriture de wsdl java a un jolie editeur . j'avais aussi vu des parsers qui parse la classe serveur et ecrive le wsdl. sinon pour de plus ample information wsdl est un standard du w3c donc w3c.org

Discussions similaires

  1. SOAP: serveur PHP / client Perl
    Par hobeur dans le forum Modules
    Réponses: 0
    Dernier message: 16/06/2010, 13h32
  2. Appeler un web service SOAP en php avec un client JavaScript
    Par lord.66 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/06/2009, 14h04
  3. Appeler un web service SOAP en php avec un client JavaScript
    Par lord.66 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 31/05/2009, 12h42
  4. [Web Service] Web service entre serveur php et client java.
    Par Spont dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/02/2009, 11h01
  5. [Web Service][SOAP] Tableau php et type complexe ?
    Par tintin72 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 18/06/2007, 11h31

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