Pb Soapclient()

Petit nouveau ! | 1 Messages

09 juin 2009, 12:14

Bonjour,

Voici un code PHP
$client = new SoapClient($wsdl,
	array
	(
	"trace"      => 1,
	"exceptions" => 0,
	'classmap' => $classmap
	)
);

$res_int = $client->pg_testsimple()->pg_testsimpleReturn;
qui retourne

Request :

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="BMIWBS"><SOAP-ENV:Body><ns1:pg_testsimple/></SOAP-ENV:Body></SOAP-ENV:Envelope>
Response:

Code : Tout sélectionner

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Le nom de la WDL contenant le service doit être précisé dans l'espace de nommage. NameSpace must contain the WDL name</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Je souhaiterais qu'il envoi au niveau de la requette les informations suivantes

Code : Tout sélectionner

<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"> <soapenv:Body> <bmiw:pg_testsimple xmlns:bmiw="BMIWBS"/> </soapenv:Body> </soapenv:Envelope>'
Comment pour paramétrer l'instruction soapclient() pour qu'elle envoi la syntaxe ci-dessus.

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juin 2009, 13:58

Modération :
fcsamplus, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

11 juin 2009, 18:45

Personne pour répondre a ce problème ?

Eléphant du PHP | 94 Messages

11 juin 2009, 21:10

Il semblerait que le problème vienne du fait que les webservices développés avec windev requièrent que l'espace de nommage du service soit déclaré directement dans la balise d'appel de la fonction et non pas au niveau de l'enveloppe SOAP.
Source

ViPHP
ViPHP | 3300 Messages

12 juin 2009, 02:32

berk soap, et berk windev

tu nous demande de reverse enginerer ton soap, c'est ton boulot non? et je parie que tu le fais pas gratuitement, alors pourquoi devraient-on?
Fait du php depuis que ca existe ou presque :)

Invité
Invité n'ayant pas de compte PHPfrance

12 juin 2009, 19:38

Oui je connais cette citation et ce problème, mais je pensais que des spécialistes PHP serait contourné ce problème.

Pour nagol : Pourquoi dénigrer... Ça n'avance a rien et pour finir, non cette partie c'est pas mon problème je veux juste aidé.

Eléphant du PHP | 94 Messages

14 juin 2009, 17:57

Tu as essayé avec NuSoap ?
Sinon tu peux toujours écrire tes requêtes à la main..
Ou modifier ton wsdl.

Ou solution efficace : oublier Microsoft :roll:

Invité
Invité n'ayant pas de compte PHPfrance

16 juin 2009, 14:37

Oui avec Nusoap ça ne fonctionne pas non plus.
Je vais chercher dans les modification du wsdl généré
Je suis preneur d'autres idées.
merci

alitokmen
Invité n'ayant pas de compte PHPfrance

06 août 2010, 12:26

Bonjour

Je suis tombé sur le même problème, la solution décrite sur http://www.developpez.net/forums/d38805 ... ce-windev/ semble fonctionner.

Elle consiste en gros à changer l'emplacement du NS. Par exemple:

Code : Tout sélectionner

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aby="AbySoap"> <soapenv:Header/> <soapenv:Body> <aby:ABYSOAP_ArborescenceSite> <aby:_Ident>1</aby:_Ident> <aby:_numCompSite>0</aby:_numCompSite> <aby:_avecEquip>0</aby:_avecEquip> <aby:_filtreEquip></aby:_filtreEquip> </aby:ABYSOAP_ArborescenceSite> </soapenv:Body> </soapenv:Envelope>
devient:

Code : Tout sélectionner

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header/> <soapenv:Body> <aby:ABYSOAP_ArborescenceSite xmlns:aby="AbySoap"> <aby:_Ident>1</aby:_Ident> <aby:_numCompSite>0</aby:_numCompSite> <aby:_avecEquip>0</aby:_avecEquip> <aby:_filtreEquip></aby:_filtreEquip> </aby:ABYSOAP_ArborescenceSite> </soapenv:Body> </soapenv:Envelope>
Bonne chance

S. Ali Tokmen
http://ali.tokmen.com/