2017-07-26 3 views
0

DjangoSpyneウェブサービスを書いています。私はいくつかのアプリケーションをシミュレートしているので、正確なインターフェースを実装する必要があります。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 > 

私はportためnamebindingを設定しようとしている私は、元のアプリケーションでport定義を次のようしています。私はモジュールspyne.application.Applicationを使ってメインアプリケーションを実装しています。これらのプロパティを設定する方法は何ですか?ポートの名前とバインディングを変更するには

答えて

1

、次のようなアプリケーションクラスの「名前」属性を設定することができます。

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

をしかし、あなたは複数のサービスを持っている場合にさらさことに注意してください"services" param spyneは、すべて同じポート/バインディング名を割り当てます。 これは、軸を使用してサービスを使用しようとすると問題を引き起こす可能性があります。

これが当てはまる場合は、おそらくspyne.application.Applicationクラスのインスタンスがさらに必要になります。

これらのプロパティの名前を変更する別の方法があります。 wsdlをxmlファイルとして保存し、必要なすべてのプロパティの名前を変更し、生成されたwsdlの代わりにWebサーバーでxmlを公開するだけです。 このxmlファイル(完全なURLを含む)をWebサービスクライアントに送ってもうまくいくはずです。

希望します。

関連する問題