zoukankan      html  css  js  c++  java
  • python 使用suds 调用webservices 接口

    最近做接口对接,遇到了.net开发的webservice接口,因为python第一次与webservice对接,连问带查,最后使用suds库来实现了

    1.安装suds

      mac: sudo pip install suds

      linux: easy_install suds

    也可以通过去官网下载suds代码,再本地安装

    2. 引用初始化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    >>> from suds.client import Client
    >>> client = Client(url)
    >>> print client
     
    Suds ( https://fedorahosted.org/suds/ ) version: 0.4 GA build: R699-20100913
     
    Service ( Kuaidi ) tns="http://gpsso.com/"
    Prefixes (1)
    Ports (2):
    (KuaidiSoap)
    Methods (1):
    KuaidiQuery(xs:string Compay, xs:string OrderNo, )
    Types (1):
    ApiSoapHeader
    (KuaidiSoap12)
    Methods (1):
    KuaidiQuery(xs:string Compay, xs:string OrderNo, )
    Types (1):
    ApiSoapHeader
    >>>

    对url做一下说明,一般要确认给的wsdl地址是正常模式,地址打开一般为xml格式而有些服务是做成了html模式,这个会导致实例化或者调用方法的时候出现xml解析异常。

    3. 方法调用

    2中的client打印出来就可以知道,该webserviece服务定义了什么方法,方法需要什么参数,声明了什么信息等(如头信息,ApiSoapHeader),方法可以通过client.serviece直接调用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> client.service.KuaidiQuery(Company='EMS', OrderNo='1111')
    (KuaidiQueryResult){
     API =
      (API){
       RESULTS = "0"
       MESSAGE = "接口查询成功"
      }
     }
    >>>

    而声明的头信息,则可以用factory的方式去实例化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> header = client.factory.create('ApiSoapHeader')
    >>> print header
    (ApiSoapHeader){
     APICode = None
     APIKey = None
     }
    >>> header.APICode = '123'
    >>> header.APIKey = 'key123'
    >>> print header
    (ApiSoapHeader){
     APICode = "123"
     APIKey = "key123"
     }
    >>>

    头信息需要用set_options方法设置

    1
    2
    3
    >>>
    >>> client.set_options(soapheaders=[header,])
    >>>
  • 相关阅读:
    [Python] Python2 、Python3 urllib 模块对应关系
    [Python] Mac pip安装的模块包路径以及常规python路径
    git 使用详解
    版本控制工具简介
    python基础练习题(二)
    python简介,安装
    python基础练习题(一)
    python练习题之面向对象(三)
    python之input函数,if,else条件语句使用的练习题(一)
    C++ 静态变量
  • 原文地址:https://www.cnblogs.com/ruiy/p/12881236.html
Copyright © 2011-2022 走看看