WebService SOAP entre PHP <-> ASP

WRInaute discret
Bonjour à tous,

Je viens de créer mon premier WebService PHP (qui fonctionne très bien entre deux sites PHP).
J'ai généré le fichier de description (WSDL) avec Zend FrameWork et le code suivant :

Code:
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setClass('maclass.php');
$autodiscover->setUri('http://monserveur.fr/serveur.php');
$autodiscover->handle();
header('Content-Disposition: attachment; filename="maclass.wsdl"');

Et comme je le disais plus haut, tout fonctionne parfaitement.

Là où il y a un problème, c'est quand j'essaie de faire fonctionné avec un client ASP (classic)

Le fichier WSDL de mon serveur PHP n'ai apparemment pas compris par l'ASP. (J'ai essayé avec d'autre WSDL trouvé sur Internet, et ça marche)

Voici le code ASP pour le client :
Code:
Dim oSOAP      
Set oSOAP = Server.CreateObject("MSSOAP.SoapClient30") 
oSOAP.ClientProperty("ServerHTTPRequest") = True                       
oSOAP.mssoapinit("http://www.serveur.fr/monfichier.wsdl")
Response.Write(oSOAP.GetReply("121","123"))

Ma question est la suivante, y a t'il un format de fichier WSDL, qui soit reconnu par tous les langages.
Ma deuxième question : Existe t'il générateur de ce type de fichiers.

Ça fait plusieurs jours que je travail à ça, et je vais bientôt cracker !!!! :lol:


Merci pour votre aide.

Orsam
 
WRInaute discret
pourquoi ton wsdl est envoye comme un attachement ?
Tu es sur de cette ligne ?

Code:
header('Content-Disposition: attachment; filename="maclass.wsdl"');

Ca sert a faire une download box, or ton wsdl devrait etre juste 'affcihe' si tu y accede, non ?
 
WRInaute discret
Bonjour et merci pour ta réponse.

La ligne dont tu parle est correcte, ce code me génère seulement mon fichier WSDL à l'aide de Zend_SOAP_Discover et me demande de l'enregistrer. A ce niveau tout fonctionne.

Ce que je ne comprends pas, c'est que quand Zend me génère mon fichier, il ressemble à ça :

<?xml version="1.0"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://webservice.monsite.com/serveur.php" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="Bidon" targetNamespace="http://webservice.monsite.com/serveur.php">
<types>
<xsd:schema targetNamespace="http://webservice.monsite.com/serveur.php"/>
</types>
<portType name="BidonPort">
<operation name="setParamInutile">
<documentation>@param string $_paramInutile</documentation>

En quand au format lu par ASP il ressemble à ça :

<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://ws.textanywhere.net/TA_WS" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://ws.textanywhere.net/TA_WS" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://ws.textanywhere.net/TA_WS">
<s:element name="SendSMS">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Client_ID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Client_Pass" type="s:string" />

Ensuite, j'ai essayé de créer un WSDL avec Zend Studio, résultat, le format est encore différent...
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/NewWSDLFile/">
<xsd:element name="NewOperation">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in" type="xsd:string"/>

Je suis complètement perdu...

Mon client ASP ne comprend que le deuxième format, Mes clients SOAP PHP utilisent le premier format (qui fonctionne parfaitement).

Alors ma question, c'est quel format est le bon ?? Et si le premier format (celui que j'utilise) n'ai pas le bon, Comment générer le deuxième format avec Zend_SOAP_Discover ?

Merci.

Olivier
 
WRInaute discret
Bonjour,

J'ai trouvé !!!!

J'ai générer mon fichier WSDL avec Zend Studio avec la fonction "rpc" (je ne sais pas ce que c'est) et le fichier WSDL est compris par les deux langages..

Ouffff !!! :lol:

Olivier
 
Discussions similaires
Haut