如何在Spyne中设置端口的名称和绑定?

问题描述:

我已通过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来实现主要应用程序。设置这些属性的方法是什么?

要更改端口的名称和绑定,可以设置“名称”,如下面的应用程序类的属性:

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服务客户端应该可以正常工作。

希望它有帮助。