Nous sommes actuellement le 10 Juil 2026, 19:58

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 4 message(s) ] 
Auteur Message
 Sujet du message: Soap + Schema XML
MessagePublié: 17 Août 2005, 11:53 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:31
Message(s) : 811
Localisation : Still on Mars
Salut je tente de lier des PART a un element d'un schema XML.
Pour une raison X ca utilise jamais mon shcema XML.

Code :
<?xml version ="1.0" encoding ="UTF-8" ?>
<definitions name="GameInformation"
  targetNamespace="http://pc-ylarrivee/GameInformation"
  xmlns:gls="http://pc-ylarrivee/GameInformation"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns="http://schemas.xmlsoap.org/wsdl/">

    <types>
        <xsd:schema targetNamespace="http://pc-ylarrivee/GameInformation" xmlns="http://www.w3.org/2000/10/XMLSchema">
            <element name="getDownloadlink">
                <complexType>
                    <attribute name="product_name" type="xsd:string" use="required"/>
                    <attribute name="user_agent" type="xsd:string" use="required"/>
                    <attribute name="telephone_number" type="xsd:string" use="required"/>
                </complexType>
            </element>

            <element name="DownloadLinkResponse">
                <simpleType>
                    <restriction base="xsd:int"/>
                </simpleType>
            </element>

        </xsd:schema>
    </types>
     
    <message name="getDownlinkRequest">
        <part name="test" type="xsd:getDownloadLink"/>
    </message>


    <portType name="servicePortType">
        <operation name="DownloadLinkRequest">
            <input message="tns:DownlinkRequest"/>
            <output message="tns:DownlinkResponse"/>
        </operation>
    </portType>

    <binding name="ServiceBinding" type="tns:servicePortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="DownloadLink">
            <input>
                <soap:body message="tns:DownloadLinkRequest" use="encoded"
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:gls"/>
            </input>
    </binding>

    <service name="serviceName">
        <port name="ServicePort" binding="serviceBinding">
            <soap:address location="somewhere.php"/>
        </port>
    </service>
</definitions>


Vous avez une idee?
Selon tout les example que je vois c'est senser etre fonctionel.
A moin que j'ai fais une erreur betes.

Merci pour toute piste qui pourrait m'aider.

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 17 Août 2005, 14:29 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Faudrait savoir comment le parser est utilisé. C'est lui qui va faire un match entre le schema et le xml.

J'ai pas utilisé souvent les schemas, mais j'avais mon schema et mon xml dans 2 fichiers séparés et je donnais une commande au parser (msxml dans mon cas) pour qu'il valide le xml.

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 18 Août 2005, 16:49 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:31
Message(s) : 811
Localisation : Still on Mars
Salut bon jai enfin compris une partie en simplifiant a une expression tres simple :)

Desole du mega post!
Mais je crois que tout ce qui est ici peut etre necessaire pour bien comprendre la situation et peut surment aider une autre personne un jour :D

Voici un example complet en PHP5
Le Client Soap
Code :
$client = new SoapClient('http://webservice.pc-ylarrivee/source/server/test.wsdl',array('trace'=>1));
try {
    $res = $client->sayHello('Yann','Larrivee');
    var_dump($res);
} catch (Exception $a) {
    var_dump($a);
}


Le serveur
Code :
// L'object a appeler
class Hello {
    public function __construct() {
    }

    public function sayHello($firstname) {
        return $a = new human($firstname);
        //return "Hello " .$firstname . ' '.$lastname;
    }
}
// L'objet a retouner
class human {
    public $firstname = NULL;
    public $lastname = NUL;

    function __construct($firstname,$lastname) {
        $this->firstname = $firstname;
        $this->lastname = $lastname;
    }
}

// Le server SOAP
$server = SoapServer('test.wsdl');
$server->handle();


Le WSDL
Code :
<definitions
   name="HelloService"
   targetNamespace="http://webservice.pc-ylarrivee/source/server/test.wsdl"
   xmlns="http://schemas.xmlsoap.org/wsdl/"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:tns="http://webservice.pc-ylarrivee/source/server/test.wsdl"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:xsd1="http://webservice.pc-ylarrivee/schema"
   >

  <types>
      <schema xmlns="http://www.w3.org/2001/XMLSchema"
         targetNamespace="http://www.ecerami.com/schema"
         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
         xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
 
         <complexType name="human">
                <sequence>
                  <element name="firstname" type="xsd:string"/>
                  <element name="lastname" type="xsd:string"/>
                </sequence>
         </complexType>
           <complexType name="requestParam">
           <attribute name="first_name" use="required">
             <simpleType>
                <restriction base="string"/>
             </simpleType>
           </attribute>
           <attribute name="last_name" use="required">
             <simpleType>
                <restriction base="string"/>
             </simpleType>
           </attribute>
         </complexType>
       </schema>
  </types>

   
   <message name="SayHelloRequest">
      <part name="request" type="xsd1:requestParam"/>
   </message>
   <message name="SayHelloResponse">
      <part name="greeting" type="xsd1:human"/>
   </message>
 
   <portType name="Hello_PortType">
      <operation name="sayHello">
         <input message="tns:SayHelloRequest"/>
         <output message="tns:SayHelloResponse"/>
      </operation>
   </portType>
   
   <binding name="Hello_Binding" type="tns:Hello_PortType">
      <soap:binding style="rpc"
         transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="sayHello">
         <soap:operation soapAction="sayHello"/>
         <input>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:helloservice"
               use="encoded"/>
         </input>
         <output>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:helloservice"
               use="encoded"/>
         </output>
      </operation>
   </binding>
 
   <service name="Hello_Service">
      <documentation>WSDL File for HelloService</documentation>
      <port binding="tns:Hello_Binding" name="Hello_Port">
         <soap:address
            location="http://webservice.pc-ylarrivee/source/orange_dominicana/testserver.php"/>
      </port>
   </service>
</definitions>


Output
Code :
object(stdClass)[4]
  public 'firstname' => 'Yann'
  public 'lastname' => null


Bref mon serveur me donne un undefined variable lastname (voyer le NULL de l'objet retourner.


Noter aussi que la requete soap Envoyer (en XML) ressemble a ceci
Code :
   <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
   <ns1:sayHello>
<request xsi:type="xsd:string">Yann</request>
<param1 xsi:type="xsd:string">Larrivee</param1>
</ns1:sayHello>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Ont voit tres bien que le premier param ne porte pas le nom first_name et que le 2ieme encore moin.

Bref la question ce resume a:

Comment ont fait pour appeler une methode via SOAP avec plusieurs
parametres ?

Comment decrit-ont cette appele de fonction dans le Schema XML ?

Merci encore de votre aide !

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 22 Août 2005, 18:51 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:31
Message(s) : 811
Localisation : Still on Mars
Salut,

Finalement pour ceux que ca peut interesser.
Un "Part" est soit un parametre ou un Output de fonctions.

C'est si simple quand ont c'est expliquer de facon claire.

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 4 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site