zoukankan      html  css  js  c++  java
  • Python 访问soap服务

    使用库:subs

    soap服务信息:

    网址:http://mobile.bjmemc.com.cn/AirService/Service.asmx

    功能:使用其中的GetData服务获取北京各个地点的空气情况

    GetData服务的请求示例:

    POST /AirService/Service.asmx HTTP/1.1
    Host: mobile.bjmemc.com.cn
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    SOAPAction: "http://tempuri.org/GetData"
    
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Header>
        <MySoapHeader xmlns="http://tempuri.org/">
          <UserName>string</UserName>
          <PassWord>string</PassWord>
        </MySoapHeader>
      </soap:Header>
      <soap:Body>
        <GetData xmlns="http://tempuri.org/">
          <DevID>string</DevID>
          <DevType>string</DevType>
        </GetData>
      </soap:Body>
    </soap:Envelope>

    Python代码的实现:

    # -*- coding:UTF-8 -*-
    from suds.client import Client
    
    def getAirInfo():
    
        url = 'http://mobile.bjmemc.com.cn/AirService/Service.asmx?wsdl'   #一般都是网址后面加个?wsdl,你可以打开看一下,是一堆xml文件
        client = Client(url)   #创建一个客户端
    
        header = client.factory.create('MySoapHeader')   #请求头,名字按他给的xml
        header.UserName = '******'               #请求头里的用户名和密码,这是个付费服务
        header.PassWord = '******'
        client.set_options(soapheaders=[header,])      #将封装好的请求头加入到client中
    
        result = client.service.GetData()           #调用GetData()服务,获取返回数据,返回一个text文本
        print result
  • 相关阅读:
    Celery最佳实践(转)
    我希望知道的关于Django的11件事(转)
    Celery和Rabbitmq自学
    我眼中的各种编程语言(转)
    linux 的nohup & 和daemon 总结(转)
    模糊测试之AVI文件分析
    微信Netting-QRLJacking分析利用-扫我二维码获取你的账号权限
    一个Unix内核级别漏洞(一)
    一次对SNMP服务的渗透测试
    定位日站大法之-社会工程学
  • 原文地址:https://www.cnblogs.com/14061216chen/p/6868630.html
Copyright © 2011-2022 走看看