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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++中this指针的作用以及用法详解

    C++中this指针的作用以及用法详解为什么引用this指针?当我们在类中定义了一个变量,同时又在类成员函数中定义了同一个变量时,也就是变量名重复时,但是我们要想使用类中的定义的变量,此时就需要this指针了。1.this指针的作用指针存在于类的成员函数中,指向被调用函数类实例的地址。 一个对象的this指针并不是对象本身的一部分,不会影响sizeof()的结果。this指针的作用域是在类内部,当在类的非静态成员函

    2022年5月13日
    47
  • Win10总是开机黑屏?显卡驱动安装失败-驱动人生解决方案

    Win10总是开机黑屏?显卡驱动安装失败-驱动人生解决方案驱动人生了解到,自从win10系统发布以来,越来越多的用户都将系统给换成win10系统了。但是面对的用户基数大,系统难免会有不完善的地方。相信很多用户在使用过程中都会因为win10的各种毛病而被坑过,比如电脑开机就出现黑屏2分钟的问题。正常情况下,win10系统应该是开机后就可以显示的,不会出现需要黑屏2分钟左右的时间。这到底是哪里出现问题了呢?  经过驱动人生官方运维人员的检查发现,这个是因为Win10系统中潜在的一些bug导致的,如果大家的显卡有问题或者显卡驱动有问题,在开机后就会黑屏1-3分钟

    2022年5月5日
    81
  • Android严苛模式StrictMode使用详解[通俗易懂]

    Android严苛模式StrictMode使用详解[通俗易懂]StrictMode类是Android 2.3(API9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题,以达到提升应用响应能力的目的。举个例子来说,如果开发者在UI线

    2022年7月3日
    23
  • HBASE的MAPREDUCE任务运行异常解决办法,无需CYGWIN,纯WINDOWS环境

    HBASE的MAPREDUCE任务运行异常解决办法,无需CYGWIN,纯WINDOWS环境

    2021年8月22日
    68
  • 【第一篇】Spring-Session实现Session共享入门教程

    任何一种技术的出现,都是来解决特定的问题的! 本篇开始学习Spring-Session相关的一些知识学习整理,让我们开始吧!Spring-Session介绍Spring-Session使用的场景?HttpSession是通过Servlet容器进行创建和管理的,在单机环境中。通过Http请求创建的Session信息是存储在Web服务器内存中,如Tomcat/Jetty…

    2022年2月27日
    43
  • CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解

    CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解FM在计算广告领域,因子分解机(FactorizationMachines,FM)是很经典的模型,面对量大且稀疏的数据,此算法仍然可以取得比较优秀的效果。假设有下面的数据:Clicked?CountryDayAd_type1USA26/11/15Movie0China1/7/14Game1China19/2/15Game其中,Clicked?是label,Country、Day、Ad_type是特征。由于三种特征都是类别型的,需要经过独热

    2022年5月31日
    38

发表回复

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

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