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] Utiliser un web service .NET


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut [Web Service][SOAP] Utiliser un web service .NET
    Bonjour,

    J'ai un gros problème. Je dois attaquer un web service .NET avec un client PHP5.
    Il me faut donc créer un client SOAP en PHP.

    Soucis n°1 : Je n'ai pas de WSDL. Je dois donc créer un client sans WSDL. Avec la documentation PHP, je sais quoi faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $options = array('location'=> "localisation du service",
    			'uri'=>"url du service",
    			'style'=>SOAP_DOCUMENT,
    			'use'=>SOAP_LITTERAL,
    			'soap_version'=>SOAP_1_1); // optionnel
    $clientSOAP = new SoapClient(NULL,$options);
    Soucis n°2 : Comme définit au niveau de mon client. Il existe des soucis de compatibilité entre les services .NET et PHP. Il faut donc définir le style et le use comme fait précédement. En effet, nous ne pouvons pas appeler un web service .NET avec du RPC/ENCODED. (source : PHP5 avancé édition Eyrolles)

    Questions : Comment pouvons nous appeler un service web .NET à partir de PHP sans WSDL ?

    Comment appelle-t-on un service web avec une définition DOCUMENT/LITTERAL ?

    En vous remerciant de votre aide.
    Bon courage pour la suite.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Déjà je ne comprends pas là... Tu dois interroger un WebService sans WSDL ... ?

    Un fichier WSDL c'est la définition des méthodes et paramètres utilisables pour communiquer avec le WebService. Même si t'arrives à dire bonjour au webservice, tu vas faire quoi ensuite ? Si t'as pas de méthodes à lui demander...

    Surtout qu'en .NET le wsdl est généré automatiquement. Un peu bizarre ton truc

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Pour réponse :

    Je possède l'url de mon service, mais lorsque j'utilise la syntaxe php habituelle, j'obtiens un message d'erreur.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ini_set("soap.wsdl_cache_enabled", "0");
    $clientSOAP = new SoapClient("http://urlservice?WSDL");
    echo 'Résultat :'.$clientSOAP->MaFonction("");
    Le message d'erreur obtenu est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Warning: SoapClient::SoapClient(http://urlservice?WSDL) [function.SoapClient-SoapClient]: failed to open stream: Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu. in C:\xampp\htdocs\TEST_WD\client.php on line 15
     
    Warning: SoapClient::SoapClient() [function.SoapClient-SoapClient]: I/O warning : failed to load external entity "http://urlservice?WSDL" in C:\xampp\htdocs\TEST_WD\client.php on line 15
     
    Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\TEST_WD\client.php on line 60

    Si quelqu'un a une idée concernant ce type d'erreurs, je suis preneur.
    Pour information, j'ai effectué des tests avec un web service créer en PHP. Je n'ai pas de problème car j'ai la maîtrise de la WSDL.

    Je débute dans l'attaque de web service .NET à partir de PHP. Si quelqu'un a de bon exemple pour moi, je suis preneur.

    En vous remerciant.
    Bon courage pour la suite.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Normalement il n'y a rien de spécial à faire de plus que ce soit d'interroger un WS en .NET, PHP, Java... Bon ya toujours quelques finitions pour que ca marche parfaitement, mais le but d'un WS c'est d'être interopérable.

    T'as essayé de tapper tout simplement dans ton navigateur ? http://urlservice?WSDL

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Biensur, c'est la première chose que j'ai fait afin de pouvoir accéder à la description du service.
    Mon problème est que je n'appelle pas le service dans une interface web mais à partir d'un service intermédiaire. En résumé, je n'arrive pas à atteindre par programmation les fonctions du webservice que j'atteind par URL.
    Bon courage pour la suite.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Citation Envoyé par Madinico Voir le message
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ini_set("soap.wsdl_cache_enabled", "0");
    $clientSOAP = new SoapClient("http://urlservice?WSDL");
    echo 'Résultat :'.$clientSOAP->MaFonction("");
    Faudrait que t'essaie de faire ca "bien". Le descriptif de l'erreur est étrange, mais faudrait que tu essaies comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try {
         $client = new SoapClient('http://urlservice?WSDL', array('trace' => 1));
         $result = $client->__call('MaFonction', array());
         echo $result->paramètre;
    }
    catch (SoapFault $fault) {
         echo $fault;
    }
    Même si la méthode prends aucun paramètres, il faut tout de même envoyer un tableau vide. Le résultat direct de la fonction __call est une StdClass (classe par défaut de php), donc que tu ne peux pas afficher directement.

    Ton message de retour doit obligatoirement avoir des paramètres, donc que tu peux traiter, afficher...

    Bon courage

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Merci pour ta participation mais je n'avance pas plus. J'ai testé ton bout de code sans succès. Etant sur d'autres projet, je reviendrai poster plus tard à ce sujet.

    Bon courage pour la suite.

Discussions similaires

  1. [WD21] utilisation d'un assemblage .NET dans un web service
    Par mimi1255 dans le forum WinDev
    Réponses: 0
    Dernier message: 20/11/2016, 21h31
  2. Utiliser un service web asp.net dans un client Delphi
    Par oclone dans le forum Débuter
    Réponses: 1
    Dernier message: 15/05/2009, 14h10
  3. [Web service] Exécuter un service .NET
    Par davels dans le forum Web & réseau
    Réponses: 3
    Dernier message: 11/07/2008, 22h26
  4. Réponses: 5
    Dernier message: 15/04/2008, 15h52
  5. Service Web asp.net utilisant une DLL MFC
    Par JCarlin dans le forum C++/CLI
    Réponses: 6
    Dernier message: 29/02/2008, 10h22

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