suds用法_soap是不可数名词吗

suds用法_soap是不可数名词吗http://www.cnblogs.com/Tommy-Yu/p/5567091.html

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

转载  于 http://www.cnblogs.com/Tommy-Yu/p/5567091.html

1. 查看服务接口

import suds
client=suds.client.Client('xxxx_webservice_url')
def get_all_methods(client):
    return [method for method in client.wsdl.services[0].ports[0].methods]

Jetbrains全家桶1年46,售后保障稳定

 

2. 查看某个具体接口的传输参数及类型

def get_method_args(client, method_name):
    method = client.wsdl.services[0].ports[0].methods[method_name]
    input_params = method.binding.input
    return input_params.param_defs(method)

 

3. 调用接口服务

client.service.xxx_function(....)

 

4. 关于调试

输出之前调用服务接口时发送了什么soap报文,以及收到什么样的soap报文

print 'last sent:\n', client.last_sent()
print 'last recv:\n', client.last_received()

 当服务器返回报文格式不规范时(非wsdl中定义的),client.last_received()为None。这个时候显然对联调极为不利。

 那就利用suds自身的日志记录看看咯。设定如下:

import sys
import logging
logger = logging.getLogger('suds')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler(sys.stdout))

如果只关心传输了什么,则可以限定logger为“suds.transport.http“

import sys
logger = logging.getLogger('suds.transport.http')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler(sys.stdout))

 5. 异常的捕捉和输出

try:
    client.service.xxx_func(*args, **kwargs)
except suds.WebFault,ex:
    print ex.fault        
    print ex.document

 

 

 

后记:对于第三方库莫名其妙的问题,果断及时拿源码过来剖析(至少debug)

 

DEMO

 来个demo说明如何运用,如下:

复制代码

>>> import suds
>>> url='http://www.gpsso.com/webservice/kuaidi/kuaidi.asmx?wsdl'
>>> client = suds.client.Client(url)
>>> print get_all_methods(client)
[KuaidiQuery]
>>> print get_method_args(client, 'KuaidiQuery')
[(Compay, <Element:0x7f6c55bc43d0 name="Compay" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />), (OrderNo, <Element:0x7f6c55bc4450 name="OrderNo" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />)]
>>> print client.service.KuaidiQuery(Company='EMS', OrderNo='1111')
(KuaidiQueryResult){
   API = 
      (API){
         RESULTS = "0"
         MESSAGE = "接口查询成功"
      }
 }
>>> print client.last_sent()
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://gpsso.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <ns0:Body>
      <ns1:KuaidiQuery>
         <ns1:OrderNo>1111</ns1:OrderNo>
      </ns1:KuaidiQuery>
   </ns0:Body>
</SOAP-ENV:Envelope>
>>> print client.last_received()
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope>
   <soap:Body>
      <KuaidiQueryResponse xmlns="http://gpsso.com/">
         <KuaidiQueryResult>
            <API>
               <RESULTS>0</RESULTS>
               <MESSAGE>接口查询成功</MESSAGE>
            </API>
         </KuaidiQueryResult>
      </KuaidiQueryResponse>
   </soap:Body>
</soap:Envelope>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215897.html原文链接:https://javaforall.net

(0)
上一篇 2025年7月12日 下午4:22
下一篇 2025年7月12日 下午5:01


相关推荐

  • Kimi月之暗面AI模型:长文本分析新标杆

    Kimi月之暗面AI模型:长文本分析新标杆

    2026年3月12日
    1
  • VUE调试工具

    VUE调试工具3.VUE调试工具3.1调试工具安装到GitHub下载工具安装压缩包,解压到响应的文件夹。到解压的vue-devtools文件目录下安装依赖包。修改manifest.json文件,该文件在vue-devtools文件的\packages\shell-chrome下。把”persistent”:false改为”persistent”:true。”background”:{“scripts”:[“build/background.js”

    2025年8月11日
    4
  • 基金基础知识

    基金基础知识基金基础知识文章目录基金的基础知识基金分类基金交易基金的费用指数基金种类估值方法专有名词解释问题解答规则本篇文章仅限于本人学习基金的笔记。基金的基础知识基金是最适合普通人的投资工具,这里要讲的“基金”属于广义基金下的证券投资基金。证券投资基金通俗的讲就是大家把钱凑在一起统一交给基金公司管理,基金公司会任命基金经理专门打理这笔钱,用于投资股票、债券等。基金收益性:大多数人并不具备金融投资的知识和能力。但基金经理则不同,他们受过专业的教育,具备投资的知识和能力。怎样的收益

    2022年5月27日
    38
  • 单片机交通信号灯控制系统设计_交通灯控制电路设计图

    单片机交通信号灯控制系统设计_交通灯控制电路设计图交通信号灯控制系统设计 作为一个硬件程序设计民工,最近一直在学习python,写个爬虫,排个序,再画个界面,其实还是挺好玩的。然而这不是我的主业啊!!!-_-|||下学期开学就要找工作了,明天刚好是新的一个月,还是滚回去调我的FPGA吧。今天先更新一个很小很小的例子作为开端,这是前几天xxx给我出的一道很随意的题目,主要是看面对一个项目…

    2026年3月7日
    4
  • B树和B+树

    B树和B+树一 BST 树到 AVL 树到 B 树的简介 1 1BST 树 二叉排序树特点 1 根节点的值大于其左子树中任意一个节点的值 2 根结点的值小于其右节点中任意一节点的值 3 这一规则适用于二叉查找树中的每一个节点 好处 查询的时间复杂度比链表快 链表的查询时间复杂度是 O n 二叉排序树平均是 O logn 二叉排序树越平衡 越能模拟二分法 所以越能想二分法的查询的时间复杂度 O logn 二叉排序树如下图 不足 但是 BST 树有一个不足的地方 就是如果插

    2026年3月18日
    2
  • 奈氏曲线的绘制步骤_qpcr扩增曲线是直线

    奈氏曲线的绘制步骤_qpcr扩增曲线是直线本文由@浅墨_毛星云出品,首发于知乎专栏,转载请注明出处文章链接:https://zhuanlan.zhihu.com/p/69380665作为基于物理的渲染(PBR)技术中材质高光质感的决定因素,更先进的法线分布函数(NormalDistributionFunction,NDF)的问世和发展,是PBR能够在游戏和电影工业日益普及的重要…

    2022年8月11日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号