[RESOLU] soap et les webservices

Mammouth du PHP | 737 Messages

02 avr. 2012, 16:35

Bonjour,

Je voulais savoir les pré-requis pour utiliser les webservices via php. Que faut-il exactement car je bloque ?

Sur mon serveur la librairie soap est installée, je peux la voir via un phpinfo(), ouverture ports 80.

Derrière ce code devrait fonctionner, non ?
<?php
$client = new SoapClient ("http://xxx/SessionServices.asmx?wsdl");
$param = array('Login' => array('database'=>la database, 'user'=>le user, 'password'=>le password));
$result = $client->__soapCall ('Login', $param);
?>
Un autre appel à faire ?

En vous remerçiant,

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 avr. 2012, 22:11

salut,

ça dépend de ton webservice :)

pour aider un peu à la lisibilité tu peux faire
<?php
$client = new SoapClient ("http://xxx/SessionServices.asmx?wsdl");
$param = array('Login' => array('database'=>la database, 'user'=>le user, 'password'=>le password));
$result = $client->Login($param);
?>
Perso j'ai testé y a pas longtemps avec un web service en java et j'ai dû ajouter les annotations pour nommer le service et les méthodes.

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

03 avr. 2012, 10:31

Bonjour, ok Moogli.

Ce que je veux dire aussi c'est qu'il n'y a pas besoin de faire un include particulier relatif à soap et que l'extension/librairie installé sur apache suffit à elle-même ?

Merci à toi

Mega
;)
Dyslexics are teople poo

ViPHP
xTG
ViPHP | 7331 Messages

03 avr. 2012, 12:56

Non c'est une librairie PHP, donc il suffit juste qu'elle soit activée :
http://fr.php.net/manual/en/soap.installation.php

On ne fait pas d'include pour utiliser des fonctions ou des objets relatifs au package de PHP.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 avr. 2012, 17:46

package de PHP.
Vade retro satanassssssssssssss

Package Pff qu'est ce qui faut pas entendre ;)


@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

04 avr. 2012, 07:20

Paquetage ? Sac à dos ? Trousse de secours ?
Tu préfères quel terme pour indiquer que c'est un récipient. :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 avr. 2012, 17:38

En php la seule chose qui y ressemble c'est le namespace ;)

Package ça me fait penser à java et ça le file des boutons ;)

J'aurais pas d'include pour les fonctions native php, ou pour les fonctions intégrées à php (sous forme d'extension).

Bref java c'est le mal et de toute façon php c'est le plus fort n'a ;)

@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

04 avr. 2012, 19:54

Tu tentes de convertir un déjà converti c'est malin. =/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 avr. 2012, 08:49

:twisted: :mrgreen:
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

05 avr. 2012, 10:33

HELL'O,

J'ai essayé ceci sur mon serveur web, en vain, c'est à s'arracher les cheveux !!!
<?php
try
{

$client = new SoapClient ("http://xxx/SessionServices.asmx?wsdl");
$param = array('Login' => array('database'=>database avec ou sans guillemets, 'user'=>user avec ou sans guillemets, 'password'=> même chose));
$result = $client->Login($param);
}
catch(Exception $e)
{
  echo "Exception: " . $e;
}
?>
Ca mouline et au final j'ai une erreur DNS ou sous firebug une jolie erreur
"NetworkError: 500 Internal Server Error - http://www.monsite.com/soapy.php"

Ça me saoule !!! Quelqu'un aurait une idée ?

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 avr. 2012, 11:34

quand tu met http://xxx/SessionServices.asmx?wsdl dans ton navigateur t'a bien le wsdl ?

parce que bon la y a pas trop de soucis.
vérifie les noms que tu passe en index du tableau (peux être un soucis de nommage comme expliqué plus haut).

c'est toi qui le créer le wsdl ?

t'a essayé un wsdl a partir d'un code qui fonctionne ?

@+

j'en profite pour te dire qu'afficher ainsi une exception c'est moyen hein :)
<?php
try
{

$client = new SoapClient ("http://xxx/SessionServices.asmx?wsdl");
$param = array('Login' => array('database'=>'database avec ou sans guillemets', 'user'=>'user avec ou sans guillemets', 'password'=>' même chose'));
$result = $client->Login($param);
}
catch(Exception $e)
{
  echo "Exception: " . $e.getMessage();
// ou
e.getPrintStacktrace();
}
>
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

05 avr. 2012, 12:18

Merci Moogli pour ton aide.

Oui j'arrive bien à afficher les différents services quand je saisis dans l'url : http://monappli/xxx.asmx et un xml quand je rajoute ?wsdl

Pour les paramètres je suis sur de moi et j'ai déjà utilisé ce code sur une autre plateforme vers ces mêmes services mais là ça coince.

Je n'ai pas créé personnellement le wsdl et là j'ai une exception SOAP :

Code : Tout sélectionner

Exception: SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://appli/xxx.asmx?wsdl' : failed to load external entity "http://appli/xxx.asmx?wsdl" in /serveur qui appelle/soapy.php:5 Stack trace: #0 /serveur qui appelle/soapy.php(5): SoapClient->SoapClient('http://appli') #1 {main}
Ca te parle ?

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 avr. 2012, 11:30

heu non :)

par contre pour ce qui est de l'utilisation du web service, j'avais aussi un code nikel en java qui attaqué le code java sans aucun problème.
pourquoi ? ben parce que java, avec les outils de compète, utilise des interfaces avec la description des champs. Et je ne sais pas pourquoi, mais avec php les annotations permettent d'être certain du nom de la méthode ^^

c'est un peu le brin les web service :s

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

16 avr. 2012, 12:19

Bonjour,

Personne n'a jamais rencontré ce souci ?

Exception: SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://appli/xxx.asmx?wsdl' : failed to load external entity "http://appli/xxx.asmx?wsdl" in /serveur qui appelle/soapy.php:5 Stack trace: #0 /serveur qui appelle/soapy.php(5): SoapClient->SoapClient('http://appli') #1 {main}

Je sèche car je ne sais pas si ca vient de moi ou de la config

Merci de votre aide.

Mega
;)
Dyslexics are teople poo

sam
Invité n'ayant pas de compte PHPfrance

14 nov. 2012, 13:25

J'ai le meme soucis, tu as trouvé une solution µ?