IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Création d'un fichier WSDL


Sujet :

Réseau/Web Python

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut Création d'un fichier WSDL
    Bonjour,

    J'ai un webservice en python (qui fonctionne correctement), et j'aurai voulu créer le fichier WSDL qui va bien.
    Est-ce qu'il existe un moyen, autre que de créer le fichier "à la main", pour avoir le fichier WSDL ? De plus, où ce fichier doit-il être sur le serveur pour pouvoir être interrogé ?

    Merci
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Vous avez construit votre WS avec quelle biblio. SOAP?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    J'utilise SOAPpy.
    J'ai créé un fichier WSDL dans Eclipse et apparemment j'ai un éditeur pour pouvoir créer un wsdl. Par contre je sais pas s'il y a moyen de "charger" mon webservice .py pour le remplir automatiquement...

    Merci
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    J'ai créé un fichier WSDL dans Eclipse et apparemment j'ai un éditeur pour pouvoir créer un wsdl. Par contre je sais pas s'il y a moyen de "charger" mon webservice .py pour le remplir automatiquement...
    Je ne suis pas sur de bien comprendre.

    L'intérêt d'une librarie SOAP est de permettre la construction d'une interface qui pourra être utilisée par les clients. La librairie connaît l'interface et devrait permettre une introspection pour construire le WSDL (qui servira aux clients).
    SOAPpy est un vieux machin - je ne sais pas s'il est encore maintenu -.
    En tout cas, il ne sait pas faire.
    Un brico qui permet de faire l'introspection et genérer le WSDL pour SOAPpy est dispo ici

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Je reviens sur ce sujet, sur lequel je bloque encore et toujours...

    Je commence à construire un wsdl à la main, j'arrive bien à m'y connecter (en python ou avec soapui (java il me semble)).
    J'arrive à requeter le fichier, mais en java les retour XML des résultats n'est pas correctement renvoyer (le retour est un objet Python).

    Mon principal problème est que je n'arrive pas à "lier" les résultats du WSDL à mes résultats de requêtes Python (dictionnaire d'objet).

    Je ne suis pas très clair, désolé, mais le concept me passe un peu au dessus... et les exemples sur les webservices python liés à un wsdl ne sont pas légion...

    Cdt
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Avec quelle librairie SOAP/WSDL Python avez vous choisi de travailler?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    SOAPpy... J'ai essayé d'utiliser ZSI mais c'est beaucoup plus compliqué que SOAPpy (même si plus maintenu). Je préférerai donc garder cette librairie, même si cela implique de construire le WSDL à la main...
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Vous avez certainement lu le chapitre ad hoc de Dive into Python.
    Vous pourriez décrire mieux le problème rencontré et poster un peu de code pour illustrer vos attentes et ce que çà fait.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Merci, j'ai déjà vu ce chapitre, par contre cela concerne plus la partie client que serveur (sauf erreur de ma part).

    Pour le code, j'ai mon webservice en python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    class Patient:
       def __init__(self):
          self._id = ''
          self._ipp = ''
          self._nom = ''
          self._nom_naissance = ''
          self._prenom = ''
          self._date_naissance = ''
          self._sexe = ''
          self._adresse = ''
          self._code_postal = ''
          self._ville = ''
          self._tel_domicile = ''
          self._tel_portable = ''
          self._tel_professionnel = ''
          self._numero_secu = ''
     
    def getPatient(IPP):
     
       sql = """SELECT id, sexe, nom, nom_naissance, prenom, date_naissance, adresse, telephone_fixe, telephone_portable , telephone_bureau, 
                       cp, ville, numero_ss, cle_ss
                FROM patient
                WHERE ipppatient = %s""" %( db.quote( IPP ) )
       info_patient = db.fetch( sql )
     
       liste_patient = list()
     
       if len(info_patient) > 0:
          for ip in info_patient:
             ( patient_id, sexe, nom, nom_naissance, prenom, date_naissance, adresse, telephone_fixe, telephone_portable, telephone_bureau, 
               cp, ville, numero_ss, cle_ss ) = ip
     
             p = Patient()
     
             p.id                = patient_id
             p.ipp               = IPP
             p.nom               = nom
             p.nom_naissance     = nom_naissance
             p.prenom            = prenom
             p.date_naissance    = date_naissance 
             if sexe == None:
                sexe = ""
             p.sexe              = sexe   
             if adresse == None:
                adresse = ""
             p.adresse           = adresse
             p.code_postal       = cp
             p.ville             = ville
             if telephone_fixe == None:
                telephone_fixe = ""
             p.tel_domicile      =telephone_fixe 
             if telephone_fixe == None:
                telephone_fixe = ""
             p.tel_domicile      =  telephone_fixe 
             if telephone_portable == None:
                telephone_portable = ""
             p.tel_portable      = telephone_portable 
             if telephone_bureau == None:
                telephone_bureau = ""
             p.tel_professionnel = telephone_bureau 
             if numero_ss == None or cle_ss == None:
                numero_secu = ""
             else:
                numero_secu = "%s%s" % (numero_ss, cle_ss)        
             p.numero_secu       = numero_secu
     
             liste_patient.append(p)
     
       return liste_patient
    et mon WSDL (sur lequel je continue de travailler)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <wsdl:definitions 
    	targetNamespace="es_dc" 	
    	xmlns:apachesoap="http://xml.apache.org/xml-soap" 
    	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    	xmlns:tns="es_dc" 
    	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    	xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
    	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <wsdl:types>
      <schema targetNamespace="es_dc" xmlns="http://www.w3.org/2001/XMLSchema">
       <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
       <complexType name="WsPatientIdentification">
        <sequence>
         <element name="date_naissance" nillable="true" type="soapenc:string"/>
         <element name="ipp" nillable="true" type="soapenc:string"/>
         <element name="id" nillable="true" type="soapenc:string"/>
         <element name="nom_naissance" nillable="true" type="soapenc:string"/>
         <element name="nom" nillable="true" type="soapenc:string"/>
         <element name="prenom" nillable="true" type="soapenc:string"/>
        </sequence>
       </complexType>
       <complexType name="WsPatient">
        <complexContent>
         <extension base="tns:WsPatientIdentification">
          <sequence>
           <element name="adresse" nillable="true" type="soapenc:string"/>
           <element name="code_postal" nillable="true" type="soapenc:string"/>
           <element name="numero_secu" nillable="true" type="soapenc:string"/>
           <element name="sexe" nillable="true" type="soapenc:string"/>
           <element name="tel_domicile" nillable="true" type="soapenc:string"/>
           <element name="ville" nillable="true" type="soapenc:string"/>
           <element name="tel_portable" nillable="true" type="soapenc:string"/>
           <element name="tel_professionnel" nillable="true" type="soapenc:string"/>
          </sequence>
         </extension>
        </complexContent>
       </complexType>
       <complexType name="WsPatientIdentificationListe">
        <sequence>
         <element name="liste" nillable="true" type="tns:ArrayOf_WsPatientIdentification"/>
        </sequence>
       </complexType>
       <complexType name="WsPatientListe">
        <sequence>
         <element name="liste" nillable="true" type="tns:ArrayOf_WsPatient"/>
        </sequence>
       </complexType>
       <complexType name="IntegerListe">
        <sequence>
         <element name="liste" nillable="true" type="tns:ArrayOf_soapenc_string"/>
        </sequence>
       </complexType>
       <complexType name="ArrayOf_WsPatientIdentification">
        <complexContent>
         <restriction base="soapenc:Array">
          <attribute ref="soapenc:arrayType" wsdl:arrayType="tns:WsPatientIdentification[]"/>
         </restriction>
        </complexContent>
       </complexType>
       <complexType name="ArrayOf_WsPatient">
        <complexContent>
         <restriction base="soapenc:Array">
          <attribute ref="soapenc:arrayType" wsdl:arrayType="tns:WsPatient[]"/>
         </restriction>
        </complexContent>
       </complexType>
       <complexType name="ArrayOf_soapenc_string">
        <complexContent>
         <restriction base="soapenc:Array">
          <attribute ref="soapenc:arrayType" wsdl:arrayType="soapenc:string[]"/>
         </restriction>
        </complexContent>
       </complexType>
      </schema>
     </wsdl:types>
     
       <wsdl:message name="getPatientResponse">
     
          <wsdl:part name="liste_patient" type="tns:WsPatientIdentification[]" />
     
       </wsdl:message>
     
       <wsdl:message name="getPatientRequest">
     
          <wsdl:part name="IPP" type="soapenc:string" />
     
       </wsdl:message>
     
       <wsdl:portType name="es_dc">
     
          <wsdl:operation name="getPatient">
     
             <wsdl:input message="tns:getPatientRequest" name="getPatientRequest"/>
     
             <wsdl:output message="tns:getPatientResponse" name="getPatientResponse"/>
     
          </wsdl:operation>
     
       </wsdl:portType>
     
       <wsdl:binding name="esdcBinding" type="tns:es_dc">
     
     
       	<wsdlsoap:binding style="rpc"
       		transport="http://schemas.xmlsoap.org/soap/http" />
       	<wsdl:operation name="getPatient">
     
     
       		<wsdlsoap:operation soapAction="es_dc/getPatient" />
       		<wsdl:input name="getPatientRequest">
     
     
       			<wsdlsoap:body use="encoded" namespace="es_dc"
       				encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
       		</wsdl:input>
     
       		<wsdl:output name="getPatientResponse">
     
     
       			<wsdlsoap:body use="encoded" namespace="es_dc"
       				encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
       		</wsdl:output>
     
       	</wsdl:operation>
     
       </wsdl:binding>
     
       <wsdl:service name="esdc">
     
          <wsdl:port binding="tns:esdcBinding" name="esdcPort">
     
             <wsdlsoap:address location="http://IP:PORT"/>
     
          </wsdl:port>
     
       </wsdl:service>
     
    </wsdl:definitions>
    En python, ca me retourne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import SOAPpy
    >>> c = SOAPpy.SOAPProxy("IP:PORT","es_dc")
    >>> c.getPatient(123)[0].nom
    'TEST'
    Alors qu'en passant par soapui (java) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    HTTP/1.0 200 OK
    Server: <a href="http://pywebsvcs.sf.net">SOAPpy 0.12.0</a> (Python 2.6.5)
    Date: Mon, 11 Mar 2013 13:07:41 GMT
    Content-type: text/xml; charset="UTF-8"
    Content-length: 1974
     
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope
      SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
      xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsd="http://www.w3.org/1999/XMLSchema"
    >
    <SOAP-ENV:Body>
    <getPatientResponse id="i1" SOAP-ENC:root="1">
    <Result href="#i2"/>
    </getPatientResponse>
    <Result SOAP-ENC:arrayType="xsd:instance[1]" xsi:type="SOAP-ENC:Array" SOAP-ENC:root="0" id="i2">
    <item href="#i3"/>
    </Result>
    <item id="i3" SOAP-ENC:root="0">
    <ville href="#i4"/>
    <tel_professionnel href="#i5"/>
    <ipp href="#i6"/>
    <id xsi:type="xsd:int">0</id>
    <tel_domicile href="#i7"/>
    <tel_portable href="#i5"/>
    <nom href="#i8"/>
    <sexe href="#i9"/>
    <numero_secu href="#i10"/>
    <adresse href="#i11"/>
    <date_naissance href="#i12"/>
    <code_postal href="#i13"/>
    <prenom href="#i14"/>
    <nom_naissance href="#i15"/>
    </item>
    <ville xsi:type="xsd:string" id="i4" SOAP-ENC:root="0">TEST</ville>
    <tel_professionnel xsi:type="xsd:string" id="i5" SOAP-ENC:root="0"></tel_professionnel>
    <ipp xsi:type="xsd:string" id="i6" SOAP-ENC:root="0">123</ipp>
    <tel_domicile xsi:type="xsd:string" id="i7" SOAP-ENC:root="0">00</tel_domicile>
    <nom xsi:type="xsd:string" id="i8" SOAP-ENC:root="0">TEST</nom>
    <sexe xsi:type="xsd:string" id="i9" SOAP-ENC:root="0">F</sexe>
    <numero_secu xsi:type="xsd:string" id="i10" SOAP-ENC:root="0">?????</numero_secu>
    <adresse xsi:type="xsd:string" id="i11" SOAP-ENC:root="0">TEST</adresse>
    <date_naissance xsi:type="xsd:string" id="i12" SOAP-ENC:root="0">01/01/1900</date_naissance>
    <code_postal xsi:type="xsd:string" id="i13" SOAP-ENC:root="0">?????</code_postal>
    <prenom xsi:type="xsd:string" id="i14" SOAP-ENC:root="0">Test</prenom>
    <nom_naissance xsi:type="xsd:string" id="i15" SOAP-ENC:root="0">TEST</nom_naissance>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    alors que je souhaiterai quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    HTTP/1.0 200 OK
    Server: <a href="http://pywebsvcs.sf.net">SOAPpy 0.12.0</a> (Python 2.6.5)
    Date: Mon, 11 Mar 2013 13:07:41 GMT
    Content-type: text/xml; charset="UTF-8"
    Content-length: 1974
     
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope
      SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
      xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsd="http://www.w3.org/1999/XMLSchema"
    >
    <SOAP-ENV:Body>
    <getPatientResponse id="i1" SOAP-ENC:root="1">
    <ville xsi:type="xsd:string" id="i4" SOAP-ENC:root="0">TEST</ville>
    <tel_professionnel xsi:type="xsd:string" id="i5" SOAP-ENC:root="0"></tel_professionnel>
    <ipp xsi:type="xsd:string" id="i6" SOAP-ENC:root="0">123</ipp>
    <tel_domicile xsi:type="xsd:string" id="i7" SOAP-ENC:root="0">00</tel_domicile>
    <nom xsi:type="xsd:string" id="i8" SOAP-ENC:root="0">TEST</nom>
    <sexe xsi:type="xsd:string" id="i9" SOAP-ENC:root="0">F</sexe>
    <numero_secu xsi:type="xsd:string" id="i10" SOAP-ENC:root="0">?????</numero_secu>
    <adresse xsi:type="xsd:string" id="i11" SOAP-ENC:root="0">TEST</adresse>
    <date_naissance xsi:type="xsd:string" id="i12" SOAP-ENC:root="0">01/01/1900</date_naissance>
    <code_postal xsi:type="xsd:string" id="i13" SOAP-ENC:root="0">?????</code_postal>
    <prenom xsi:type="xsd:string" id="i14" SOAP-ENC:root="0">Test</prenom>
    <nom_naissance xsi:type="xsd:string" id="i15" SOAP-ENC:root="0">TEST</nom_naissance>
    </getPatientResponse>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    En espérant que ça soit plus claire comme ça.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Est-ce que la question serait: "existe-t-il et comment positionner le mode debug pour afficher les échanges SOAP et les headers HTTP?"
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Pourquoi pas.
    Mais la question serait plus : est-ce que mon fichier WSDL est correct (je ne pense pas) et surtout comment lier les attributs de ma classe python Patient au résultat getPatientResponse du wsdl ?
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Enthau Voir le message
    Pourquoi pas.
    Essayez avec SOAPPy.Config.debug = 1 juste après l'import.
    ou sur le proxy retourné "p.config.debug = 1"

    Citation Envoyé par Enthau Voir le message
    Mais la question serait plus : est-ce que mon fichier WSDL est correct (je ne pense pas)
    S'il est lu et décodé par Java et Python, la syntaxe devrait être correcte.
    Est ce que çà va répondre à vos besoins (au cahier des charges)? Là vous êtes seul maître à bord.

    et surtout comment lier les attributs de ma classe python Patient au résultat getPatientResponse du wsdl ?
    SOAPPy construit déjà le proxy entre Python et le WS pour vous.
    Quel serait l'intérêt de toute cette machinerie de WSDL, SOAPPy, ... si pour l'utiliser vous deviez écrire des "class"?
    Les class sont là et les échanges sont des instances bien définies.

    Rien ne vous empêche d'ajouter des trucs à vous "on top" mais vous devez partir de là.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Merci pour les réponses.

    Quand vous dites :
    Quel serait l'intérêt de toute cette machinerie de WSDL, SOAPPy, ... si pour l'utiliser vous deviez écrire des "class"?
    Les class sont là et les échanges sont des instances bien définies.
    Cela veut dire qu'il n'est pas possible de lier les attributs de ma classe à des balises du wsdl ??
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Enthau Voir le message
    Cela veut dire qu'il n'est pas possible de lier les attributs de ma classe à des balises du wsdl ??
    Le WSDL est un fichier XML. SOAPPy construit les instances/objets associés.
    Vous pouvez créer un lien "logique" entre "vos" classes et celles de SOAPPy qui in fine correspondront à la description données dans le WSDL.
    Repartons de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import SOAPpy
    >>> ws = SOAPpy.SOAPProxy("IP:PORT","es_dc")
    >>> ws.getPatient(123)[0].nom
    On peut définir Patient par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Proxy:
        _ws_object = None
        def __getattr__(self, key):
            return getattr(self._ws_object, key)
    Et écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> patient = Proxy()
    >>> patient._ws_object = ws.getPatient(123)[0]
    >>> print (patient.nom)
    Proxy n'a pas besoin de "connaître" ce qu'il y a dans le WSDL pour ressembler à un "Patient".
    Après il y a un boulot de "spécialisation" à réaliser côté "création" de l'association entre l'instance et le _ws_object qui sera fonction des associations entre les différents objets du WS.

    Ce qui est certain c'est qu'empiler les abstractions augmentera le nombre de lignes de code. Sont elles justifiées ou est-ce juste une mise en forme héritée de "bonnes pratiques" du folklore Java? A vous de voir.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Si je comprends bien, je peux mettre n'importe quoi dans mon WSDL.
    Du moment que pour la partie client j'appelle bien le wsdl et les bonnes fonctions, les données retournées seront bien au format que j'ai défini dans mon webservice python.

    En gros, le seul intérêt que je peux avoir à structurer mon wsdl correctement serait pour avoir la présentation détaillée des entrées/sorties que je souhaite lors de l'appel sur mes fonctions.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

Discussions similaires

  1. Création d'un WebService WCF depuis un fichier WSDL
    Par DotNetMatt dans le forum Services Web
    Réponses: 5
    Dernier message: 29/12/2010, 16h57
  2. création d'un fichier wsdl avec WSDL4J (pblm et quest)
    Par mina86 dans le forum Services Web
    Réponses: 0
    Dernier message: 30/07/2008, 00h56
  3. [SOAP] [WSDL] [PHP] Problème création du fichier WSDL (Débutant)
    Par Guybrush113 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/09/2007, 12h45
  4. FOXPRO 2.6 : erreur créations du /des fichiers CAB
    Par breihtiti dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/11/2002, 11h28
  5. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo