zoukankan      html  css  js  c++  java
  • 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等高级话题,有需要可以查看,都比较详细。

  • 相关阅读:
    时间差的计算
    时间差的计算第二篇
    并不能完全不编码完成Windows Service的安装和卸载
    今年是搜索引擎年吗?热!搜索引擎算法点击率火爆
    Virtual PC,我真的不敢用你!
    我理解的17种C#写的Hello World程序
    反搜索引擎
    如何保证Windows Serverice健壮长效运转?
    服务器是怎么做成的?
    超酷的超级DataGrid
  • 原文地址:https://www.cnblogs.com/dancesir/p/7927420.html
Copyright © 2011-2022 走看看