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

Python 如何在Spyne中设置端口的名称和绑定?,python,web-services,wsdl,spyne,Python,Web Services,Wsdl,Spyne,我已经通过Django编写了一个Spyneweb服务。我在模拟一些应用程序,所以我需要实现精确的接口。我在原始应用程序中有以下端口定义: < wsdl:service name = "SendSmsWebServiceImplService" > < wsdl:port binding = "tns:SendSmsWebServiceImplServiceSoapBinding" name = "SendSmsWebServiceImplPort" > &

我已经通过
Django
编写了一个
Spyne
web服务。我在模拟一些应用程序,所以我需要实现精确的接口。我在原始应用程序中有以下
端口
定义:

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






我正在尝试为
端口设置
名称
绑定
。我正在使用module
spyne.application.application
来实现主应用程序。设置这些属性的方法是什么?

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

   app = Application(services=[YourService],
      name='serviceName',
      tns='your.tns',
      in_protocol=Soap11(validator='lxml'),
      out_protocol=Soap11()
   )
但是请注意,如果在“services”参数中公开了多个服务,spyne将为它们分配相同的端口/绑定名称。 如果您试图使用axis使用服务,这可能会导致问题

如果是这种情况,您可能需要更多的spyne.application.application类实例

还有另一种方法可以重命名这些属性。您只需要将wsdl保存为xml文件,重命名所有需要的属性,然后在web服务器上发布xml以代替生成的wsdl。 将这个xml文件(带有完整的url)提供给web服务客户端应该可以正常工作

希望能有帮助