• python使用suds来调用webservice


    对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便。

      安装suds建议使用easy_insall来做。下面是官方的一些例子:

    Python代码  

    from suds.client import Client  
    url = 'http://localhost:7080/webservices/WebServiceTestBean?wsdl'  
    client = Client(url)  
      
    #查看该service提供的方法  
    print client  
      
    Suds - version: 0.3.3 build: (beta) R397-20081121  
      
    Service (WebServiceTestBeanService) tns="http://test.server.enterprise.rhq.org/"  
       Prefixes (1):  
         ns0 = "http://test.server.enterprise.rhq.org/"  
       Ports (1):  
         (Soap)  
           Methods:  
             addPerson(Person person, )  
             echo(xs:string arg0, )  
             getList(xs:string str, xs:int length, )  
             getPercentBodyFat(xs:string name, xs:int height, xs:int weight)  
             getPersonByName(Name name, )  
             hello()  
             testExceptions()  
             testListArg(xs:string[] list, )  
             testVoid()  
             updatePerson(AnotherPerson person, name name, )  
       Types (23):  
         Person  
         Name  
         Phone  
         AnotherPerson  

       1.简单参数调用

    Python代码  收藏代码

    result = client.service.getPercentBodyFat('jeff', 68, 170)  
    print result  
      
    result = client.service.getPercentBodyFat(name='jeff', height=68, weight=170)  
    print result  
      
    #词典  
    d = dict(name='jeff', height=68, weight=170)  
    result = client.service.getPercentBodyFat(**d)  
    print result  
      
    You have 21% body fat.  

       2.复杂参数

    Java代码  收藏代码

    person = client.factory.create('Person')  
    print person  

    Java代码  

    (Person)=  
      {  
        phone = []  
        age = NONE  
        name(Name) =   
            {  
                last = NONE  
                first = NONE  
            }  
       }  

     #设置变量

    Java代码  收藏代码

    phone = client.factory.create('Phone')  
    phone.npa = 202  
    phone.nxx = 555  
    phone.number = 1212  

      Python代码  

    name = client.factory.create('Name')  
    name.first = 'Elmer'  
    name.last = 'Fudd' 

    Python代码  收藏代码

    person.name = name  
    person.age = 35  
    person.phone = [phone]  
      
    #或者  
    person.phone.append(phone)  

      Java代码  收藏代码

    try:  
       person_added = client.service.addPerson(person)  
    except WebFault, e:  
      print e  

      在0.3.8以上版本还提供了更简单的调用方式,完美的json

    Python代码  

    person = {}  
    #根据对象结构构造json  
      
    phone = {  
        'npa':202,  
        'nxx':555,  
        'number':1212,  
    }  
      
    name = {  
        'first':'Elmer',  
        'last':'Fudd'  
    }  
      
    person['name'] = name  
    person['age'] = 35  
    person['phone'] = [phone,]  
      
    try:  
       person_added = client.service.addPerson(person)  
    except WebFault, e:  
      print e  

     3.异常处理

    Python代码  收藏代码

    client = client(url, faults=False)  
    result = client.service.addPerson(person)  
    print result  
    ( 200, person ...)  

     更多可以查看官方文档:https://fedorahosted.org/suds/wiki/Documentation,里面还讲了soap头得安全认证,webservice cache等高级话题,有需要可以查看,都比较详细。

  • 相关阅读:
    Android编程动态创建视图View的方法
    ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)
    SQL 2008 数据库迁移
    Response.Write具体介绍
    美国地名大全(美国城市名称英文、中文)
    MySQL 暂时文件夹
    任务管理器进程中多个chrome.exe的问题
    PNG文件格式具体解释
    秒杀多线程第四篇 一个经典的多线程同步问题
    Metropolis Hasting算法
  • 原文地址:https://www.cnblogs.com/dancesir/p/7927420.html
Copyright © 2020-2023  润新知