Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Réseau/Web
Réseau/Web Forum d'entraide sur Python et le réseau/Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/12/2012, 12h44   #1
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2012, 14h20   #2
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Salut,
Vous avez construit votre WS avec quelle biblio. SOAP?
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2012, 14h58   #3
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2012, 15h13   #4
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Salut,

Citation:
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 11h35   #5
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 12h18   #6
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Salut,
Avec quelle librairie SOAP/WSDL Python avez vous choisi de travailler?
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 13h43   #7
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 14h09   #8
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 14h25   #9
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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 :
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 :
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 :
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 :
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 :
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 16h22   #10
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 16h35   #11
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2013, 17h22   #12
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
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.

Citation:
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2013, 09h28   #13
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2013, 12h15   #14
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
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 :
1
2
3
>>> import SOAPpy
>>> ws = SOAPpy.SOAPProxy("IP:PORT","es_dc")
>>> ws.getPatient(123)[0].nom
On peut définir Patient par:
Code :
1
2
3
4
class Proxy:
    _ws_object = None
    def __getattr__(self, key):
        return getattr(self._ws_object, key)
Et écrire:
Code :
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2013, 12h56   #15
Enthau
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 193
Points : 30
Points : 30
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" ...
Enthau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h25.


 
 
 
 
Partenaires

Hébergement Web