2017-07-26 64 views
0

我已通過Django編寫了Spyne網絡服務。我正在模擬一些應用程序,所以我需要實現精確的接口。我在原來的應用程序如下port定義:如何在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 > 

這是我在模擬器:

< 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 > 

我想設置爲portnamebinding。我正在使用模塊spyne.application.Application來實現主要應用程序。設置這些屬性的方法是什麼?

回答

1

要更改端口的名稱和綁定,可以設置「名稱」,如下面的應用程序類的屬性:

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

但要注意,如果你有暴露多個服務「服務」參數spyne將爲它們分配所有相同的端口/綁定名稱。 如果嘗試使用軸來使用服務,可能會導致問題。

如果這是您的情況,您可能需要更多spyne.application.Application類的實例。

還有另一種方法來重命名這些屬性。您只需將wsdl另存爲xml文件,重命名所需的所有屬性,然後在您的Web服務器上發佈xml以代替生成的wsdl。 將此xml文件(具有完整的url)提供給您的Web服務客戶端應該可以正常工作。

希望它有幫助。

相關問題