2

Python 2.7.3 と soaplib 0.8.1 を使用して、Django 1.5.2 で SOAP Web サービスを開発しようとしています。現時点ではすべて正常に動作していますが、@soapmethod 応答に名前空間を追加する必要があります。

これは私の見解です:

from sms.soaplib_handler import DjangoSoapApp, soapmethod, soap_types
from django.views.decorators.csrf import csrf_exempt


class SmsGatewayService(DjangoSoapApp):

    __tns__ = 'http://mismsgw01.milano.ea.it/soap'

    @soapmethod(
        soap_types.String, 
        soap_types.String, 
        soap_types.String, 
        soap_types.Integer,
        soap_types.Boolean, 
        soap_types.Boolean, 
        soap_types.String, 
        _returns=soap_types.Any
    )
    def sendSms(
        self, 
        sendTo, 
        numSender,
        senderDescription,
        timeToLive,
        isDelivered,
        isStatistics,
        messageText
    ):

        retCode = '<retCode>OK</retCode>'

        return retCode

sms_gateway_service = csrf_exempt(SmsGatewayService())

これは、メソッドを呼び出したときの応答です。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <sendSmsResponse>
         <sendSmsResult>
            <retCode>OK</retCode>
         </sendSmsResult>
      </sendSmsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

誰でも私を助けることができますか?SOAP 応答を変更するにはどうすればよいですか? 次のようなものが必要です。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <sendSmsResponse xmlns="http://mismsgw01.milano.ea.it/soap">
         <retCode>OK</retCode>
      </sendSmsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

前もって感謝します

4

1 に答える 1

0

SoapLib の代わりに Spyne を使用する必要があります。Spyne は soapLib から構築されたため、コードの精神は残り、Spyne は独自の wsdl で正常に動作します。

于 2014-08-29T13:45:17.953 に答える