python suds 获取webService封装的数据

1、suds的client获取webService封装的数据,URL为http:// **?WSDL形式

from suds.client import Client

import sys

def get_data():
    reload(sys)
    sys.setdefaultencoding('utf-8')

    url = 'http://**?WSDL'  
    client = Client(url)  
#     print client
    begin_date="2013-09-05 00:00:00"
    end_date="2013-09-06 23:59:59"
    Mheader=client.factory.create('MsgHeader')
    
    Mheader.SOURCE_SYSTEM_ID="TOMAS"
    Mheader.SOURCE_SYSTEM_NAME="TOMAS"
    Mheader.USER_ID="TOMAS"
    Mheader.USER_NAME="TOMAS"
    Mheader.SUBMIT_DATE=datetime.now().strftime("%Y-%m-%d")

    InputInfo=client.factory.create('Input')       
    InputInfo.PAGE_SIZE=500
    InputInfo.REPAIR_DATE_FROM=begin_date
    InputInfo.REPAIR_DATE_TO=end_date

    result=client.service.process(Mheader,InputInfo)
    
    for i in range(0,7):
        print result[i]
}

2、这里可以把上面程序中的client中的内容打印出来,如下所示:

Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913

Service ( ** ) tns="http:**"
   Prefixes (3)
      ns0 = "http://**"
      ns2 = "http://**"
      ns3 = "http://**"
   Ports (1):
      (**)
         Methods (1):
            process(ns3:MsgHeaderMsgHeader, ns0:InputInput, )
         Types (4):
            ns0:Input
            ns3:MsgHeader
            OutputItem
            ResponseCollection

从client打印出来的内容可知,webService封装了一个方法process,该方法有两个输入参数,即上面程序中的MsgHeader和Input,创建实例client.factory.create('MsgHeader'),这两个参数相当于结构体类型,结构体具体包含的内容与封装webService接口的人沟通,这样通过process方法可以获得设置输入参数对应的输出(可能包括很多信息,例如处理状态信息、数据),接下来就可以对数据进行处理了。


你可能感兴趣的:(python)