Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 25/01/2012, 10h30   #1
masterx_goldman
Futur Membre du Club
 
Avatar de masterx_goldman
 
Inscription : mai 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 166
Points : 19
Points : 19
Par défaut Comment appeller un webservice en php ?

Bonjour tout le monde,

Je veux écrire un code php qui appelle un webservice dont j'ai l'url wsdl, j'ai cherché sur internet des exemples pour tester et j'ai trouvé ce lien qui offre une liste d'url de webservices de test http://www.actionscript.org/forums/s...d.php3?t=70742 , j'ai choisi un exemple http://www.webservicex.net/length.asmx?WSDL qui fait la conversion de distances en donnant une unité source de conversion, une unité cible et une valeur, et j'ai écrit le code suivant en lisant la spécification du webservice ici http://www.webservicex.net/length.as...angeLengthUnit:
Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$wsdl = "http://www.webservicex.net/length.asmx?WSDL";
$cliente = new SoapClient($wsdl);
 
$LengthValue=1;
$fromLengthUnit='Miles';
$toLengthUnit='Kilometers';
 
$vem = $cliente->__soapCall('ChangeLengthUnit',array('LengthValue' => $LengthValue , 'fromLengthUnit' => $fromLengthUnit,'toLengthUnit' => $toLengthUnit ));
print $vem->ChangeLengthUnitResult;
 
?>
Normalement si tout va bien, je devrais avoir 1,6 comme résultat,( 1 Mile = 1,6 Km ) mais quand je lance ma page php, j'obtient 0 !
En regardant le code source de la page http://www.webservicex.net/length.as...angeLengthUnit , on peut voir que l'appel du webservice en cliquant sur Invoke ne passe pas par l'url en wsdl que moi j'utilise.. et là je me perds vraiment ..
Aussi, je trouve pas un exemple simple pour appeler le webservice google search..
j'ai essayé ce code :
Code :
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
<?php
$Query = "Hello World";
$key = "ABQIAAAAuq8WwJqLli1jzpsjK2nlTRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQRjALX1F-oSyIUc9c7R2CIMBbqzA";
$start = 0;
 
$parameters = array( 
            "key"         => $key,
            "q"           => $Query,
            "start"       => $start,
            "maxResults"  => 10,
            "filter"      => true,
            "restrict"    => "",
            "safeSearch"  => false,
            "lr"          => "lang_en", 
            "ie"          => "",
            "oe"          => ""
    );
 
$soapclient = new soapclient("http://api.google.com/search/beta2");
$result = $soapclient->call("doGoogleSearch", $parameters, "urn:GoogleSearch");
$searchtime = $result["searchTime"];
$begin = $start + 1;
$end = $start + $parameters["maxResults"];
$total = $result["estimatedTotalResultsCount"]; 
 
if ($total > 0)
{
    $result = $result["resultElements"]; 
 
    for ($i = 0; $i < $parameters["maxResults"]; $i++)
    {
        $element = $result[$i];
        $url = $element["URL"];
        $title = $element["title"];
        $snippet = $element["snippet"];
        ?><p><?= $snippet ?></p><?
    }
 
}
?>
Remarque: l'url http://api.google.com/search/beta2 donne une erreur 404 ( le code est ancien ), donc c'est normal que le 2ème code en marche pas..mais je trouve pas la nouvelle url que google a mis à disposition pour faire la recherche
Alors, si quelqu'un pourrait me guider pour faire tourner un exemple simple, je serais reconnaissant! merci d'avance pour votre aide !
masterx_goldman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 21h36   #2
masterx_goldman
Futur Membre du Club
 
Avatar de masterx_goldman
 
Inscription : mai 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 166
Points : 19
Points : 19
Par défaut Solution trouvée avec une des façons décrites dans la doc officielle mais pas avec toutes les façons

re, j’ai trouvé une solution à mon problème du code client webservice de test que j’ai crée en php en suivant deux exemples :
1) Appel de webservice en ayant son url wsdl : http://geekswithblogs.net/THines01/a...07/callws.aspx
2) Appel de webservice avec serveur soap en local http://www.blog-nouvelles-technologi...par-un-client/

Code fonctionnel :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$wsdl = "http://www.webservicex.net/length.asmx?WSDL";
$client = new SoapClient($wsdl);
 
$LengthValue=1;
$fromLengthUnit='Miles';
$toLengthUnit='Kilometers';
 
$res = $client->ChangeLengthUnit(array('LengthValue' => $LengthValue , 'fromLengthUnit' => $fromLengthUnit,'toLengthUnit' => $toLengthUnit ));
print $res->ChangeLengthUnitResult;
 
?>

Code non fonctionnel ( ancien code que j'ai mis en haut ) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$wsdl = "http://www.webservicex.net/length.asmx?WSDL";
$client = new SoapClient($wsdl);
 
$LengthValue=1;
$fromLengthUnit='Miles';
$toLengthUnit='Kilometers';
 
$res = $client->__soapCall('ChangeLengthUnit',array('LengthValue' => $LengthValue , 'fromLengthUnit' => $fromLengthUnit,'toLengthUnit' => $toLengthUnit ));
print $res->ChangeLengthUnitResult;
 
?>
Pourtant dans la doc de php (http://www.php.net/manual/en/soapclient.soapcall.php ), les deux méthodes devraient fonctionner , voici l’exemple dans la doc officielle :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
$client = new SoapClient("some.wsdl");
 
$client->SomeFunction($a, $b, $c);//celle là a fonctionné chez moi
 
$client->__soapCall("SomeFunction", array($a, $b, $c)); //celle là n’a pas //fonctionné chez moi
 
 
$client->__soapCall("SomeFunction", array($a, $b, $c), NULL,
                    new SoapHeader(), $output_headers);
 
 
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));
$client->SomeFunction($a, $b, $c);
$client->__soapCall("SomeFunction", array($a, $b, $c));
$client->__soapCall("SomeFunction", array($a, $b, $c),
                    array('soapaction' => 'some_action',
                          'uri'        => 'some_uri'));
?>

Code extrait du 2ème lien haut : http://www.blog-nouvelles-technologi...par-un-client/

Code :
1
2
$client = new SoapClient("operation.wsdl");
echo $client->getResult("add", 3, 4);//dans cet exemple, appeler par la méthode directement et non pas en utilisant __soapcall


Bon, là j’ai pris la première façon qui fonctionne en attendant que je trouve une explication pour le 2ème code qui ne marche pas.
Merci de mettre en réponse si vous en auriez.
Bonne soirée.
masterx_goldman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 09h37   #3
neo25
Invité de passage
 
Homme
Développeur Web
Inscription : avril 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : avril 2011
Messages : 17
Points : 4
Points : 4
bonjour

moi aussi je veux créer mon webservice en urgence avec php et nusoap mais j'ai quelques trucs que je ne comprends pas :
  1. comment créer ce fichier WSDl et ou le mettre?
  2. est ce que j'ai besoin de 2 fichiers php : un en local et l'autre sur le serveur?
  3. et pour tester en local mon web service je met quoi pour le lien du WSDL ,sachant que j'utilise WAMPSERVER 2.0 , http://localhost/monwebservice ou http://127.0.0.1/monwebservice ?
j'ai trouvé ce tuto mais il ne mentionne pas le fichier WSDL http://www.jkraft.fr/2008/11/07/cree...p-avec-nusoap/

Merci d'avance
neo25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2012, 17h08   #4
Jeakr
Invité régulier
 
Inscription : novembre 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 16
Points : 9
Points : 9
Salut,
Mon tuto est un peu vieux, y a moyen de faire différemment.

Mais il est vrai que le fichier wsdl n est pas obligatoire, mais nusoap le génère tout seul.

Citation:
Envoyé par neo25 Voir le message
bonjour

moi aussi je veux créer mon webservice en urgence avec php et nusoap mais j'ai quelques trucs que je ne comprends pas :
  1. comment créer ce fichier WSDl et ou le mettre?
  2. est ce que j'ai besoin de 2 fichiers php : un en local et l'autre sur le serveur?
  3. et pour tester en local mon web service je met quoi pour le lien du WSDL ,sachant que j'utilise WAMPSERVER 2.0 , http://localhost/monwebservice ou http://127.0.0.1/monwebservice ?
j'ai trouvé ce tuto mais il ne mentionne pas le fichier WSDL http://www.jkraft.fr/2008/11/07/cree...p-avec-nusoap/

Merci d'avance
Jeakr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2012, 16h39   #5
neo25
Invité de passage
 
Homme
Développeur Web
Inscription : avril 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : avril 2011
Messages : 17
Points : 4
Points : 4
ok, merci pour l'information.

ce que je veux faire c'est la sélection d'une liste des produits de ma BDD (IDs, nom, prix,...) et l'envoyée avec un webservice en php. J'ai réussi a extraire les données mais j'arrive toujours pas a créer le webservice à l'aide de nusoap.

et si le webservice est créer comment voir si j'ai le bon résultat ou non (c a d afficher le wsdl)?

pourriez vous m'aide sur ce coup là?

merci d'avance
cordialement
neo25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h45.


 
 
 
 
Partenaires

Hébergement Web