如何从 WSDL 文件构建soap服务器?

问题描述

我正在尝试从 WSDL 文件创建一个 soap 服务器。我正在使用 Python 3 和 Spyne 来生成它。 这个服务器需要是特定的,因为客户端已经存在。 我需要我的 WSDL 请求如下所示

   <soapenv:Body>
      <pus:receiveEvents>
         <!--Optional:-->
         <eventQueryResult>
            <!--Optional:-->
            <queryId>?</queryId>
            <!--Optional:-->
            <queryStatus>?</queryStatus>
            <!--Zero or more repetitions:-->
            <events>
               <!--Optional:-->
               <eid>?</eid>
               <!--Optional:-->
               <eventMessage>?</eventMessage>
               <!--Optional:-->
               <eventSeverity>?</eventSeverity>
               <!--Optional:-->
               <eventTime>?</eventTime>
               <!--Optional:-->
               <eventTypeName>?</eventTypeName>
               <!--Optional:-->
               <meterId>?</meterId>
            </events>
            <subscriptionId>?</subscriptionId>
         </eventQueryResult>
      </pus:receiveEvents>
   </soapenv:Body>

但是,这是我的 WSDL 请求:

   <soapenv:Body>
      <pus:receiveEvents>
         <!--Optional:-->
         <pus:eventQueryResult>
            <!--Optional:-->
            <pus:queryId>?</pus:queryId>
            <!--Optional:-->
            <pus:queryStatus>?</pus:queryStatus>
         </pus:eventQueryResult>
         <!--Optional:-->
         <pus:events>
            <!--Optional:-->
            <pus:eid>?</pus:eid>
            <!--Optional:-->
            <pus:eventMessage>?</pus:eventMessage>
            <!--Optional:-->
            <pus:eventSeverity>?</pus:eventSeverity>
            <!--Optional:-->
            <pus:eventTime>?</pus:eventTime>
            <!--Optional:-->
            <pus:eventTypeName>?</pus:eventTypeName>
            <!--Optional:-->
            <pus:meterId>?</pus:meterId>
         </pus:events>
         <pus:subscriptionId>
            <!--Optional:-->
            <pus:subscriptionId>?</pus:subscriptionId>
         </pus:subscriptionId>
      </pus:receiveEvents>
   </soapenv:Body>

这是我写的代码

    class eventQueryResult(ComplexModel):
    __namespace__ = 'http://pushevent.nbapi.cgms.cisco.com/'

    queryId = String
    queryStatus = String

class events(ComplexModel):
    __namespace__ = 'http://pushevent.nbapi.cgms.cisco.com/'   

    eid = String
    eventMessage = String 
    eventSeverity = String
    eventTime = Long
    eventTypeName = String
    meterId = String

class subscriptionId(ComplexModel):
    __namespace__ = 'http://pushevent.nbapi.cgms.cisco.com/'

    subscriptionId = Long

class EventPushService(ServiceBase):
    __tns__ = 'http://pushevent.nbapi.cgms.cisco.com/'
    __wsdl__ = 'http://schemas.xmlsoap.org/wsdl/'

    @rpc(eventQueryResult.customize(min_occurs=0),events.customize(min_occurs=0),subscriptionId.customize(min_occurs=1,nillable = True),_returns=ResponseData)
    def receiveEvents(ctx,eventQueryResult,events,subscriptionId):
        eid = events.eid

        return print(eid)

我需要 eventQueryResult 包含事件,但我不知道如何。 Spyne 的文档对此没有帮助。

感谢您的评论

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)