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

EDI, CMS, Outils, Scripts et API PHP Discussion :

PHP + Curl + SOAP


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Octobre 2012
    Messages : 40
    Points : 59
    Points
    59
    Par défaut PHP + Curl + SOAP
    Bonjour.

    Je dois coder une fonction qui ferait appel à un Webservices (hyper classic) sur un site dont le site Serveur est accessible par login et mot de passe.

    J'utilise un code PHP + Curl pour me loguer et cette partie là fonctionne.

    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
      $ch = curl_init();
      $url = "http://mon_site_serveur_webservice";
      $user = "user";
      $password = "mot de passe";
      $fields = array( 'input_user'=>$user, 'input_pass'=>$password, 'submit_login'=>'Submit');
      $postvars = '';
      foreach($fields as $key=>$value) {
        $postvars .= $key . "=" . $value . "&";
      }
     
      curl_setopt($ch,CURLOPT_URL,$url);
      curl_setopt($ch,CURLOPT_HEADER, 0);
      curl_setopt($ch,CURLOPT_POST, True);                //0 for a get request
      curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);
      curl_setopt($ch,CURLOPT_RETURNTRANSFER, True);
      curl_setopt($ch,CURLOPT_FOLLOWLOCATION, True);
      curl_setopt($ch,CURLOPT_COOKIESESSION, true);
      curl_setopt($ch,CURLOPT_COOKIEJAR,'cookie.txt');
      curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt');
      curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
      curl_setopt($ch,CURLOPT_TIMEOUT, 20);
     
      $response = curl_exec($ch);
      echo  "curl response is:" . $response."<br>";
      curl_close ($ch);
    Cette partie là fonctionne parfaitement.

    Avant la fermeture curl, j'insère mot code webservices client.

    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
    try
    {
      $clientSOAP = new SoapClient( null,
        array (
          'uri' => 'http://mon_site/index.php?menu=rx_check_in&action=ws',
          'location' => 'http://mon_site/index.php?menu=rx_check_in&action=ws',
          'wsdl_cache' => 0,
          'trace' => 1,
          'exceptions' => 0
      ));
     
      $ret = $clientSOAP->__call('hello', array());
     
      echo $clientSOAP->__getLastResponse();
      echo $ret;
     
      echo '<br />';
     
      $ret = $clientSOAP->__call('donne', array('i'=>5));
      echo $ret;
     
    }
    catch(SoapFault $f)
    {
      echo $f;
    }
    Et du coup, pas de connexion du webservice car, le contenu de __getLastResponse() m'affiche la page de login.
    Donc perte de session ou pas la même.

    Du coup, je me doute qu'il faille conserver la session ouverte.
    J'essaye de glaner des infos là dessus, mais je n'y arrive pas.
    Je ne sais pas si les deux codes peuvent utiliser la même session et comment.

    Individuellement, sans authentification, le webservice fonctionne.
    Je ne vois pas trop.

    Si quelqu'un peut m'aider là dessus.

    Franck

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Points : 333
    Points
    333
    Par défaut
    Pour moi il manque des options pour le soapclient, je ne connais pas curl donc je ne comprend pas ce que tu fais avec exactement.
    Mais pour moi qui est déjà utilisé soapclient, les paramètres sont les suivants :
    'location' ,'uri','login','password','trace','soap_version' => SOAP_1_1,'encoding'=> 'utf-8'

    A ta place j'essayerai à minima de repréciser le login et mot de passe dans le soapclient

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Octobre 2012
    Messages : 40
    Points : 59
    Points
    59
    Par défaut
    Pour moi il manque des options pour le soapclient, je ne connais pas curl donc je ne comprend pas ce que tu fais avec exactement.
    Bonjour.

    Merci de me répondre.
    En fait, la partie curl fait en sorte de me loguer sur le portail web.
    Pour ouvrir la session, affectation des variables: 'input_user'=>$user, 'input_pass'=>$password, 'submit_login'=>'Submit'
    Et là ma page principale s'ouvre.
    Donc c'est ce que je veux.

    Mais pour moi qui est déjà utilisé soapclient, les paramètres sont les suivants :
    'location' ,'uri','login','password','trace','soap_version' => SOAP_1_1,'encoding'=> 'utf-8'
    Si SOAP client est capable de se loguer en renseignant les variables que Curl utilise, très bien. Moi, ça me convient.

    A ta place j'essayerai à minima de repréciser le login et mot de passe dans le soapclient
    Bon ok, je vais essayer çà, et je fait un retour sur le résultat.

    En tout cas merci de ton aide, vu que je ne maitrise pas trop cette parti là (tout ce qui est SOAP WSDL et CURL)
    PHP, ça va pour ce que j'ai besoin de faire, je m'en sort.

Discussions similaires

  1. curl && Soap avec php
    Par paquito dans le forum Langage
    Réponses: 0
    Dernier message: 02/06/2010, 19h16
  2. Apache php et SOAP
    Par swingNJava dans le forum Apache
    Réponses: 1
    Dernier message: 30/07/2008, 22h02
  3. select/insert depuis une fonction PHP et SOAP
    Par roblescriso dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 06/06/2008, 11h06
  4. Webservice C# et client PHP via SOAP.
    Par rudylar dans le forum Services Web
    Réponses: 11
    Dernier message: 29/05/2008, 15h12
  5. Webservice C# et client PHP via SOAP. ->HELP<-
    Par rudylar dans le forum Services Web
    Réponses: 2
    Dernier message: 14/05/2008, 09h45

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