python模拟webservice客户端

前言:

最近工作中需要和第三方进行数据对接,对方的服务端是webservice接口,因此需要使用python模拟webservice客户端,这里简要记录一下模拟过程!

相关说明:

具体开发流程是先在本地开发自测完成,然后在线上调试。所以服务端也需要我们自己模拟!

  • 客户端编写:使用python的requests模块;
  • 服务端模拟:使用SoapUI工具
SoapUI模拟服务端:

1.加载wsdl文件

2.创建服务端

3.开启服务器

4.服务器开启动标志

使用requests模块编写客户端:

1.说明:客户端编写整体思路如下

  • 构造请求头headers;
  • 构造请求体数据:请求体数数据是发送给服务器的,这里是根据wsdl文件中的请求体数据而来的;
  • 解析响应体,获取服务器端的响应数据;

2.代码示例(以请求登录接口为例):

# coding:utf-8

import xml.dom.minidom as XD
from xml.sax.saxutils import escape, unescape
import requests
import traceback

# 发送给webservice的请求体数据
send_webservice_data = '''<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.inf.oa.ztesoft.com">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:Login>
         <ser:UserName>username</ser:UserName>
         <ser:Password>password</ser:Password>
      </ser:Login>
   </soapenv:Body>
</soapenv:Envelope>'''


class WebService(object):
    # 响应节点名称(通过该名称拿到响应数据)
    rtn_node_name = "LoginReturn"

    def __init__(self):
        # 请求url
        self.url = "http://127.0.0.1:8088/mockOaOrderServicePortSoapBinding"
        # 构造响应头
        self.headers = {
            "User-Agent": "Python Post",
            "Content-type": "text/xml; charset=UTF-8",
            "Content-length": "%d" % len(send_webservice_data),
            "SOAPAction": ""
        }

    def send_request(self, send_data):
        """发送webservice请求,获取响应信息"""
        response = requests.post(self.url, headers=self.headers, data=send_data, verify=False)
        xml_data = response.content
        return xml_data

    def parse_data(self, xml_data):
        """
        1.解析响应数据:响应数据是xml格式的,这里需要解析xml获取响应数据
        2.响应数据样例:
            <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.inf.oa.ztesoft.com">
           <soapenv:Header/>
               <soapenv:Body>
                  <ser:LoginResponse>
                     <LoginReturn>{"success":true, "msg":"登录成功"}</LoginReturn>
                  </ser:LoginResponse>
               </soapenv:Body>
          </soapenv:Envelope>
        """
        dom = XD.parseString(xml_data)
        # 通过节点名称,获取响应数据
        rtn_data = dom.getElementsByTagName(self.__class__.rtn_node_name)[0].childNodes[0].nodeValue
        return rtn_data

    def main(self):
        try:
            # 获取响应的xml数据
            xml_data = self.send_request(send_webservice_data)
            # 解析响应的xml数据:获取响应结果
            rtn_data = self.parse_data(xml_data)
            print rtn_data
        except Exception as e:
            logger.error(e.message)
            logger.error(traceback.format_exc())


if __name__ == "__main__":
    WebService().main()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 一、序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及...
    学呀学呀总得学会了吧阅读 1,307评论 0 7
  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 868评论 0 0
  • 前言 介于自己的网络方面知识烂的一塌糊涂,所以准备写相关网络的文章,但是考虑全部写在一篇太长了,所以分开写,希望大...
    青蛙要fly阅读 1,105评论 0 6
  • 价值投资是价值规律在投资活动中的具体运用,价值投资者就是通过顺应价值规律,把握价值规律提供的确定性,从而取得成功的...
    影视探真阅读 579评论 0 1
  • (一) 之前,朋友画画总向我抱怨她失眠到凌晨三四点,然后六点要爬起来上班,痛苦的向我阐述她的无力与恐惧。不能感同身...
    Alice鲸鱼咩阅读 534评论 0 2