Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2011, 16h04   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Par défaut Consommer un Webservice

Salut,

Alors comme le titre le précise j’aimerai consommer un webservice par php. Ce webservice j'arrive à le consommer en utilisant java. Mais j'aimerai utiliser une application web dynamique utilisant PHP. Le problème c'est que j'ai essayé tous avec Nusoap ou la bibliothèque natif, des tutos mais rien je n'arrive à la faire fonctionner, je reçois comme erreur Cannot find the customer.

L'appel est tous simple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
 
$client = new SoapClient("fichier.wsdl");
$args=array('coco','titi','12345678','10');
try { 
$client->__soapCall("getToken", $args);
}
catch (Exception $e)
{
    echo 'Caught exception: ',  $e->getMessage(), "\n";
} 
?>
SVP essayer de m'aider. D'ailleurs j'ai remarqué qu'il n y a pas beaucoup de messages qui parlent des webservice (Je me suis est ce que je suis vraiment le seul à avoir ce genre de problème).

BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 16h46   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 163
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 163
Points : 8 536
Points : 8 536
c'est
Code :
$client->getToken('coco' ,'titi', '12345678', '10');
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 23h13   #3
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Salut,

J'ai déjà fait ce changement
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$client = new SoapClient("fichier.wsdl");
$args=array('coco','titi','12345678','10');
$client->getToken('coco','titi','12345678','10');
try { 
$client->__soapCall("getToken", $args);
}
catch (Exception $e)
{
    echo 'Caught exception: ',  $e->getMessage(), "\n";
} 
?>
Mais d'autres surviennent :

Code :
1
2
3
4
5
 
Fatal error: Uncaught SoapFault exception: [soap:Server] Cannot find the customer in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\clientSOAP\index.php:5 Stack trace: 
#0 C:\Program Files (x86)\EasyPHP-5.3.8.1\www\clientSOAP\index.php(5): SoapClient->__call('getToken', Array) 
#1 C:\Program Files (x86)\EasyPHP-5.3.8.1\www\clientSOAP\index.php(5): SoapClient->getToken('coco','titi','12345678','10') 
#2 {main} thrown in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\clientSOAP\index.php on line 5
BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 10h36   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 163
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 163
Points : 8 536
Points : 8 536
ton code est le même ...
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 11h36   #5
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Comment il est le même j'ai ajouté comme tu m'a dit la ligne :

Code :
$client->getToken('coco','titi','12345678','10');
BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 19h26   #6
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Envoyé par Bahrouz Voir le message
Comment il est le même j'ai ajouté comme tu m'a dit la ligne :

Code :
$client->getToken('coco','titi','12345678','10');
BR
Salut,

c'est l’exécution de la méthode. C'est la partie qui doit être dans le bloc try

Code :
1
2
3
4
 
try { 
  $client->getToken('coco','titi','12345678','10');
}
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 06h58   #7
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Bonjour,

J'ai fait la modification :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
$client = new SoapClient("fichier.wsdl");
 
try { 
$client->getToken('coco','titi','12345678','10');
}
catch (Exception $e)
{
    echo 'Caught exception: ',  $e->getMessage(), "\n";
} 
?>
Mais j'ai toujours le l'erreur :

Code :
Caught exception: Cannot find the customer
Any help...

BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 10h42   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 163
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 163
Points : 8 536
Points : 8 536
t'as pas d'erreur au niveau de ton code, t'as juste pas les bonne donnée, le service est bon en tout cas
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 11h43   #9
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Le truc c'est que en java ça fonctionne parfaitement et je n'ai rien modifié comme donnée...

BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 11h48   #10
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
J'ai remarqué lorsque j'ai fait
Code :
var_dump($client->__getTypes());
je reçois des types de données comme String, int, est ce que ça peut poser un problème :
Code :
1
2
3
4
5
6
7
array
  0 => string 'struct setOutput {
 string arg0;
 int arg1;
 boolean arg2;
}' (length=1)
 )
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 12h12   #11
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Si ça peut aider voir le simple code en java, sachant qu'avec Java c'est apache Axis que a généré tous les fichiers



BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 12h17   #12
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Code :
$client = new SoapClient("omniaccess2.wsdl");
Le wsdl ne devrait pas se trouver sur une adresse web venant du fournisseur du service ?
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 13h36   #13
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Je n'arrive pas à bien comprendre ta question. Le fichier wsdl m'a permis en java de générer automatiquement en utilisant apache et axis les différentes class.

L'adresse ou se trouve le wsdl est la suivante : https://www.omniscout.ca/omniaccess/ws

BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 17h17   #14
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
J'ai remarqué quelques choses, en java si j'utilise des données erroné pour mon getToken j'obtiens le même type d'erreur Cannot find the customer comme celui en php. Le problème c'est qu'on php j'entre les bons données. Est ce qu'il peut arriver que php change quelques choses!!!

BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 18h56   #15
Invité de passage
 
Inscription : novembre 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 10
Points : 1
Points : 1
Alors j'ai trouvé la solution.

Il faut suivre le wsdl avec ces déclarations de type complexe type. Il faut créer des variables de type complexetype. En php ça se traduit par un array.

Example de déclaration de type complexetype :

Code :
1
2
3
4
5
6
$Variable=array(  
           'arg0' => 'val1',
           'arg1' => 'val2',
	   'arg2' => 'val3',
	   'arg3' => 10
             );
Merci pour tous
BR
Bahrouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h24.


 
 
 
 
Partenaires

Hébergement Web