2017-07-26 1 views
0

J'ai écrit un service Web Spyne via Django. Je simule une application, j'ai donc besoin de mettre en place des interfaces exactes. Je suivais port définition ai dans la demande initiale:Comment définir le nom et la liaison d'un port dans Spyne?

< wsdl:service name = "SendSmsWebServiceImplService" > 
    < wsdl:port binding = "tns:SendSmsWebServiceImplServiceSoapBinding" name = "SendSmsWebServiceImplPort" > 
     < soap:address location = "http://192.168.100.31:8181/smsgateway/sendsms"/> 
    </wsdl:port > 
</wsdl:service > 

Et voici ce que j'ai dans le simulateur:

< wsdl:service name = "SendSmsWebServiceImplService" > 
    < wsdl:port name = "SendSmsWebService" binding = "tns:SendSmsWebService" > 
     < soap:address location = "http://127.0.0.1:5000/smsgateway/services/SendSms/"/> 
    </wsdl:port > 
</wsdl:service > 

Je suis en train de mettre name et binding pour le port. J'utilise le module spyne.application.Application pour implémenter l'application principale. Quel est le moyen de définir ces propriétés?

Répondre

1

Pour modifier le nom du port et de liaison, vous pouvez définir le « nom » attribut de la classe d'application comme les suivantes:

app = Application(services=[YourService], 
     name='serviceName', 
     tns='your.tns', 
     in_protocol=Soap11(validator='lxml'), 
     out_protocol=Soap11() 
    ) 

mais sachez que si vous avez plus d'un service exposés dans la "services" param spyne leur attribuera tous le même port/nom de liaison. Cela peut causer des problèmes si vous essayez de consommer le service avec l'axe.

Si c'est votre cas, vous aurez probablement besoin de plus d'instances de la classe spyne.application.Application.

Il existe une autre manière de renommer ces propriétés. Vous avez juste besoin de sauvegarder le fichier XML en tant que fichier XML, de renommer toutes les propriétés souhaitées, puis de publier le fichier XML sur votre serveur Web à la place du fichier WSDL généré. L'alimentation de ce fichier XML (avec l'URL complète) vers votre client de service Web devrait fonctionner correctement.

Espérons que ça aide.