[RESOLU] soap et les webservices

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] soap et les webservices

Re: [RESOLU] soap et les webservices

par MamboJambo » 20 déc. 2012, 13:11

Ah, et j'ai aussi dû modifier le fichier Wsdl.

Dans mon cas, ce fichier est automatiquement créé à l'installation (ou la mise à jour) du web-service car je le développe sous Windev.
Or, une des dernières ligne du fichier pointait vers un nom de machine du réseau local (celle où il est installé) :

Code : Tout sélectionner

<soap:address location="http://PC-Eric/WSLEO_WEB/awws/wsLEO.awws"/>
A priori, en attaquant le web-service depuis l'extérieur, cette adresse doit certainement être utilisée telle quel. Et, c'est sûr que d'essayer de se connecter à "http://PC-Eric..." depuis internet ne doit pas être super efficace.

J'ai donc du le modifier pour y mettre l'adresse publique de la box :

Code : Tout sélectionner

<soap:address location="http://xxx.xxx.xxx.xxx/WSLEO_WEB/awws/wsLEO.awws"/>
Voilà

Re: [RESOLU] soap et les webservices

par MamboJambo » 20 déc. 2012, 13:01

Bonjour,

J'ai trouvé !
En fait j'ai voulu en faire trop et ajouter de la sécurité, alors que ce n'est pas du tout mon domaine, en utilisant un port 4080 (choisit au hasard - 4000 parce que les ports sont disponibles vers ce numéro et 80 pour rappeler le port HTTP).
J'avais, sur ma box, redirigé les trames TCP du port 4080 vers le port 80 du PC hébergeant le serveur web qui fait tourner le web-service.

Et c'est cet usage d'un port autre que 80 qui bloquait l'accès. Alors qu'en utilisant cette même translation de port pour attaquer le même site web en interne (URL = "http://MonAdresseIpPublique:4080/sitetest/test.php"), ça marchait nickel.

En me contentant de modifier ma règle de routage pour rediriger le port 80 vers le port 80 du PC local, ça marche. Je suppose que certaines trames passent forcément par le port 80 et qu'elles étaient alors bloquées par la box.

Ça m'embête un peu car j'ai l'impression qu'en terme de sécurité, c'est pas top de rediriger tout le trafic HTTP vers un PC sur le réseau local mais j'essaierai de trouver un pro en sécurité web pour finaliser le projet.

Par contre, pour en revenir à la façon dont tu as résolu ton problème, ce serait quand même intéressant si tu pouvais décrire ta solution parce que, je cherchais depuis plusieurs jours à résoudre mon problème et j'ai vu des dizaines de sujet à propos de ce
SoapClient: failed to open stream
mais jamais de réponse.

Avec la mienne, cela en ferait déjà 2 ;-)

Cordialement

Re: [RESOLU] soap et les webservices

par Megadeth » 20 déc. 2012, 10:46

Bonjour,

Je consultais ma messagerie à l'instant quand j'ai vu ton post ^^

Dans ton cas, j'ai pas l'impression qu'il s'agisse d'un problème de script puisque tu me dis qu'il fonctionne. A première vue, je dirai qu'il s'agit plutôt d'un problème de configuration ou d'environnement. Typiquement le "failed to open stream" renvoie à quelque chose d'inexistant ou sur lequel tu n'aurais pas les droits. Le serveur distant a l'autorisation d'interroger les webservices ? Tiens-nous au courant.

++

Mega
;)

Re: [RESOLU] soap et les webservices

par MamboJambo » 20 déc. 2012, 10:25

Bonjour Megadeth,

Pourrais-tu nous faire part de la façon dont tu as résolu le problème ?
Je suis dans un cas similaire. tout fonctionne nickel depuis un site web sur le réseau local mais dès que je veux attaquer le web-service depuis un site externe, j'obtiens un beau message d'erreur comme le tien :
Warning: SoapClient::SoapClient(http://xxx.xxx.xxx.xxx:4080/WSLEO_WEB/a ... .awws?wsdl) [function.SoapClient-SoapClient]: failed to open stream: Connection timed out in /htdocs/public/sitetest/test.php on line 14

Warning: SoapClient::SoapClient() [function.SoapClient-SoapClient]: I/O warning : failed to load external entity "http://xxx.xxx.xxx.xxx:4080/WSLEO_WEB/a ... .awws?wsdl" in /htdocs/public/sitetest/test.php on line 14

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://xxx.xxx.xxx.xxx:4080/WSLEO_WEB/a ... .awws?wsdl' in /htdocs/public/sitetest/test.php:14 Stack trace: #0 /htdocs/public/sitetest/test.php(14): SoapClient->SoapClient('http://xxx.xxx.xxx...', Array) #1 {main} thrown in /htdocs/public/sitetest/test.php on line 14
Et, comme toi, je m'arrache les cheveux à essayer de comprendre

Pourtant le code de la page de test est simplissime :
<?php
$wsleo = "";

echo '<a href="http://xxx.xxx.xxx.xxx:4080/WSLEO_WEB/awws/wsLEO.awws?wsdl">WSDL</a><br />';

// Connexion au webservice
$wsleo = new SoapClient("http://xxx.xxx.xxx.xxx:4080/WSLEO_WEB/awws/wsLEO.awws?wsdl",array('soap_version' => SOAP_1_2, 'login' => 'xxx', 'password' => 'xxx'));
// Connecter();
$Retour = $wsleo->AfficherChemins();
print_r($Retour);
?>
Pourtant, le lien direct vers le wsdl fonctionne bien

Merci

Re: soap et les webservices

par Megadeth » 14 nov. 2012, 15:09

BONJOUR sam,

Oui le bignou fonctionne maintenant.

Si tu veux de l'aide, il faut être plus précis et un minimum courtois.

Cdlt,

Mega
;)

Re: soap et les webservices

par sam » 14 nov. 2012, 13:25

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

Re: soap et les webservices

par Megadeth » 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
;)

Re: soap et les webservices

par moogli » 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

@+

Re: soap et les webservices

par Megadeth » 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
;)

Re: soap et les webservices

par moogli » 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();
}
>

Re: soap et les webservices

par Megadeth » 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
;)

Re: soap et les webservices

par moogli » 05 avr. 2012, 08:49

:twisted: :mrgreen:

Re: soap et les webservices

par xTG » 04 avr. 2012, 19:54

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

Re: soap et les webservices

par moogli » 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 ;)

@+

Re: soap et les webservices

par xTG » 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. :)