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

Langage PHP Discussion :

Webservice d'une machine distante


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut Webservice d'une machine distante
    Bonjour,

    Je cherche depuis mon site a appelé un webservice sur une machine distante. Est-ce possible ?

    Quelqu'un pourrait-il m'indiquer la marche à suivre svp merci. Je n'ai jamais fait et avoue être un peu perdu...

    HPL76

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    oui, il est possible de faire ça. Quel webservice veux tu utiliser?

    http://php.net/manual/en/refs.webservice.php

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Bonjour gene69 et merci de te soucier d'un problème qui n'est pas le tien !

    Je suis vraiment novice en la matière.

    Voilà, j'ai 3 fichiers : un index.php, un serveur.php et un client.php.

    Mon index se présente de la sorte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    echo '<p>test</p>';
     
    $client = new SoapClient("xxx");
     
    $arFunctions = $client->__getFunctions();
     
    foreach ($arFunctions as $function) {
        echo $function.'<br/>'."
    ";
    }
     
    ?>
    A la place des "xxx" j'ai mis l'ip, le nom de la machine distante, le nom du webservice avec pour finir .asmx?wsdl.

    Voici le fichier client.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
    <?php // Pour supprimer le cache du web-service 
    ini_set('soap.wsdl_cache_enabled', 0); 
     
     
    // Nouveau Client SOAP 
    try { 
     
    // Nouvelle instance de la classe soapClient 
     
    $client = new SoapClient('http://localhost/MonWebService/monFormat.wsdl', array('trace' => 1)); 
     
    $parm = date('Y-m-d'); 
     
    // Appel de la méthode QuelJour du service web 
     
    try{ 
     
    $oReturn =  $client -> __soapCall('QuelJour', array('string' =>$parm)); 
     
    } catch (SoapFault $fault) { 
     
    trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); 
     
    } 
     
    // affiche le résultat 
     
    var_dump($oReturn); 
    } catch (SoapFault $fault) { 
     
    echo 'erreur : '.$fault; 
    }
    ?>
    et enfin le serveur.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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php 
    // Pour supprimer le cache du web-service 
    ini_set('soap.wsdl_cache_enabled', 0); 
    // Pour définir le temp maximal d'éxecution de notre web-service 
    ini_set('default_socket_timeout', 180); 
     
     
    // Nom de notre web-service 
    class Server { 
     
    // Le service QuelJour que l'on a définit dans notre format wsdl 
     
    function QuelJour($parm) { 
     
    return 'Web-Service ok'; 
     
    } 
    } 
    // On tente d'instancier la classe soapServer 
    // Si cela s'avère impossible, on affiche une erreur 
    try { 
     
    $server = new SoapServer('monFormat.wsdl',  array('trace' => 1,'encoding'    => 'ISO-8859-1')); 
     
    // On définit la classe qui va gérer les requêtes SOAP (pour nous c'est la class Server) 
     
    $server -> setclass('Server'); 
     
    $server->setPersistence(SOAP_PERSISTENCE_REQUEST); 
    } catch (Exception $e) { 
     
    echo 'erreur'.$e; 
    } 
    // Si l'appel provient d'un Web-Service 
    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
     
    try { 
     
    $server -> handle();} 
     
    catch (Exception $e) { 
     
    echo 'erreur'.$e; 
     
    } 
    } 
    // Facultatif seulement pour montrer les fonctions disponibles par le web-service 
    else { 
     
    echo '<strong>This SOAP server can handle following functions : </strong>'; 
     
    echo '<ul>'; 
     
    foreach($server -> getFunctions() as $func) { 
     
    echo '<li>' , $func , '</li>'; 
     
    } 
     
    echo '</ul>'; 
    }
    ?>
    Tu me conseilles autre chose ? Que dois-je faire ? Je voudrais simplement dans un premier temps établir une connexion au webservice...

    HPL76

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Le fichier index.php m'a renvoyé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    LoginResponse Login(Login $parameters)
    AutoLoginResponse AutoLogin(AutoLogin $parameters)
    LogoutResponse Logout(Logout $parameters)
    SetSessionValueResponse SetSessionValue(SetSessionValue $parameters)
    GetSessionValueResponse GetSessionValue(GetSessionValue $parameters)
    SetBindValueResponse SetBindValue(SetBindValue $parameters)
    GetBindValueResponse GetBindValue(GetBindValue $parameters)
    LoginResponse Login(Login $parameters)
    AutoLoginResponse AutoLogin(AutoLogin $parameters)
    LogoutResponse Logout(Logout $parameters)
    SetSessionValueResponse SetSessionValue(SetSessionValue $parameters)
    GetSessionValueResponse GetSessionValue(GetSessionValue $parameters)
    SetBindValueResponse SetBindValue(SetBindValue $parameters)
    GetBindValueResponse GetBindValue(GetBindValue $parameters)
    Ca veut dire qu'il a réussi à se co ?

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Chacune des lignes affichées correspond aux opérations exposées par le webservice.

    Sais-tu laquelle tu veux utiliser ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Ça veut dire que la connexion est belle et bien faite ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $client = new SoapClient("http://xx.xx.xx.xx/WS/MonService.asmx?wsdl");
    suffit à lui seul sans aucun autre appel à appeler un webservice ?
    Je voudrais être sur de bien comprendre...c'est la dll qui fait ?

    A vrai dire, je ne sais pas quelle opération je dois utiliser mais admettons que ce soit la première LoginResponse Login(Login $parameters) ?

    En tout cas merci vivement pour votre esprit communautaire !!!

    HPL76.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tuer un processus sur une machine distante
    Par nuke_y dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 16/11/2004, 09h55
  2. Réponses: 8
    Dernier message: 13/07/2004, 09h00
  3. [VB.NET] Import de fichiers d'une machine distante
    Par Bill_Baroud dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/06/2004, 13h16
  4. [Débutant] Connexion sur une machine distante protégée
    Par arthix dans le forum Développement
    Réponses: 3
    Dernier message: 28/08/2003, 09h46
  5. Réponses: 4
    Dernier message: 10/09/2002, 17h09

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