相关疑难解决方法(0)

如何在Python中使用WSDL(SOAP)Web服务?

我想在Python中使用基于WSDL SOAP的Web服务.我查看了Dive Into Python代码,但SOAPpy模块在Python 2.5下不起作用.

我已经尝试使用肥皂水其中工程部分,但与某些类型的中断(suds.TypeNotFound:类型未找到:"项目").

我也看过Client,但这似乎不支持WSDL.

我看过ZSI,但看起来很复杂.有没有人有任何示例代码?

WSDL是https://ws.pingdom.com/soap/PingdomAPI.wsdl,可以与PHP 5 SOAP客户端一起使用.

python soap web-services

122
推荐指数
6
解决办法
18万
查看次数

Python 3.x存在哪些SOAP库?

我在网上搜索了一个现有的,支持Python 3的 SOAP库.(客户端和服务器)

这里是我找到的库列表:

Python 2:

  • Zeep:活跃且在Python 2.7/3中有详细记录
  • SOAPy:已停止使用Python 2项目
  • ZSI:停止使用Python 2项目
  • soaplib:已停产的Python 2项目
  • SUDS:停用Python 2项目(自2012年2月起没有活动)
  • rpclib:停用Python 2项目(自2012年8月起没有活动)

Python 3:

  • Zeep:活跃且记录良好的 Python 2/3项目
  • SOAPy:已停止使用Python 2项目
  • pysimplesoap:活跃的 Python 2/3项目
  • SUDS-jurko:非常不活跃.Python 2/3项目
  • ladon:活跃度低.但仅限网络服务

这个列表对你来说似乎完整吗?(仅供参考,我使用这篇文章作为起点(该帖子的目的是相同的,但对于Python 2而言))

Ladon在我看来是Python 3唯一现有的框架,但AFAIK只能用于实现服务器端.

NO:我不想自己迁移其中一个已停产的Python 2项目.我正在寻找一个受支持的项目,如果需要,我们会派出一个积极的团队提

更新于28/09/2013

python soap suds python-3.x

73
推荐指数
1
解决办法
3万
查看次数

Python SOAP客户端 - 使用SUDS还是其他什么?

我目前正在研究实现一个将使用现有广泛的SOAP管理API的客户端.

我研究了不同的SOAP实现,如pysimplesoapSUDS.虽然第一个因为递归太多而解析WSDL时遇到问题,但是suds工作得很好(但很慢)而且我真的很喜欢模块.

但是,SUDS似乎存在一些问题,例如高内存消耗,WSDL解析速度以及缺少对某些WSDL属性的支持(例如,选择属性).
虽然有很多人积极提交错误报告和补丁,但自2010-09-15以来没有发布过SUDS.此外,维基和路线图看起来有点被忽视.

对我来说,看起来SUDS已不再维护.

所以我的问题在这里:

  1. 作为肥皂客户,将更大的项目作为suds是否有意义?
  2. 是否有一个suds fork已经实现了票务系统中可用的一些补丁?
  3. 有哪些替代方案,内存占用少,易于使用,可以处理复杂的大型WSDL文件

[2013年11月更新]

两年多过去了,事实证明原来的肥皂水泥项目真的已经死了.自2010年以来,没有进一步的版本.由于这一事实,很多人开始分支suds,而像Debian这样的发行版正在部署原始suds包的修补版本来修复一些问题.

我可以推荐Jurko积极维护的叉子,我成功使用了它.它支持python 3并解决了很多泡沫已知的问题.Bitbucket上提供了发行说明和错误跟踪器,PyPI上也提供了该程序包,因此可以使用pip进行安装.

python soap suds

61
推荐指数
4
解决办法
6万
查看次数

基于wsdl创建python soap服务器

我有一个描述Java产品上的通信服务器客户端的wsdl文件.我正在实现一个基于Python的新服务器,它将实现相同的服务.

您是否知道基于wsdl创建Python服务器代码的任何方法,这不需要我编写所涉及的所有复杂类型?

另外,你推荐什么Api?

python soap wsdl

29
推荐指数
2
解决办法
3万
查看次数

使用Amazon Web Services WSDL的最佳python soap堆是什么?

Python有许多肥皂堆 ; 尽可能地说,所有都有很多缺陷.

有没有人运气消耗在Python中使用WSDL for S3,EC2和SQS?

我的经验是在构造Client对象时suds失败了; 经过一番争吵之后,ZSI会生成不起作用的客户端代码; 等等

最后,我知道boto,但因为它是围绕AWS的手动包装器,它是(1)不完整的,(2)永远不会与最新的AWS WSDL保持同步.

python soap wsdl amazon amazon-web-services

14
推荐指数
1
解决办法
2564
查看次数

你能帮我解决这个SUDS/SOAP问题吗?

所以我试图使用SUDS 访问这个api https://www.clarityaccounting.com/api-docs/.这是应该工作的代码:

from suds.client import Client
client = Client('https://www.clarityaccounting.com/api/v1?wsdl')
token = client.service.doLogin('demo', 'demo', 'www.kashoo.com', 'en_US', 300000)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

WebFault: Server raised fault: 'No such operation:  (HTTP GET PATH_INFO: /api/v1)'
Run Code Online (Sandbox Code Playgroud)

他们的支持人员说请求应该如下所示:

<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:api="http://api.service.books/">
  <SOAP-ENV:Body>
     <api:doLogin>
        <username>demo</username>
        <password>demo</password>
        <siteName>www.kashoo.com</siteName>
        <locale>en_US</locale>
        <duration>300000</duration>
     </api:doLogin>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

但是SUDS'看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope 
xmlns:ns0="http://api.service.books/" 
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <ns1:Body>
      <ns0:doLogin>
         <username>demo</username>
         <password>demo</password>
         <siteName>www.kashoo.com</siteName>
         <locale>en_US</locale>
         <duration>300000</duration>
      </ns0:doLogin>
   </ns1:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

我是一个真正的SOAP和SUDS新手,但我听说SUDS是从这里使用的最好的SOAP库:Python存在哪些SOAP客户端库,它们的文档在哪里?

所以我的问题是什么是不同的关键部分,使请求失败,如何配置SUDS发送格式正确的请求?

python soap wsdl suds

14
推荐指数
1
解决办法
2万
查看次数

Python:如何使用Twisted作为SUDS的传输?

我有一个基于Twisted的项目,用于与网络设备通信,我正在添加对API为SOAP 的新供应商(Citrix NetScaler)的支持.不幸的是,Twisted中对SOAP的支持依然存在SOAPpy,这已经过时了.事实上,就这个问题(我刚检查过)而言,twisted.web.soap 本身在21个月内甚至没有更新!

我想问一下,如果有人有任何经验,他们愿意与SUDS使用Twisted的超级异步传输功能.看起来插入一个自定义的Twisted传输将是一个自然的SUDS' Client.options.transport,我只是很难缠绕我的头.

我确实想出了一种方法,通过利用异步方式使用SUDS调用SOAP方法twisted.internet.threads.deferToThread(),但这对我来说就像是一个黑客.

这是我做过的一个例子,给你一个想法:

# netscaler is a module I wrote using suds to interface with NetScaler SOAP
# Source: http://bitbucket.org/jathanism/netscaler-api/src
import netscaler
import os
import sys
from twisted.internet import reactor, defer, threads

# netscaler.API is the class that sets up the suds.client.Client object
host = 'netscaler.local'
username = password = 'nsroot'
wsdl_url = 'file://' + os.path.join(os.getcwd(), 'NSUserAdmin.wsdl')
api = netscaler.API(host, username=username, password=password, wsdl_url=wsdl_url)

results = []
errors …
Run Code Online (Sandbox Code Playgroud)

python soap twisted suds transport

12
推荐指数
1
解决办法
3287
查看次数

如何使用Python调用Soap API

虽然我过去使用过API,但这是我尝试使用的第一个SOAP.我从SOAP教程中复制,粘贴和更改了一些代码,但我已经看到它在10个不同的示例中以10种不同的方式完成,但没有一个在解释代码时非常清楚.也许以下代码不是最好的方法,但这就是为什么我正在寻找一些帮助和一个明确的方向进入.非常感谢.

import string, os, sys, httplib

server_addr = "auctions.godaddy.com"
service_action = "GdAuctionsBiddingWSAPI/GetAuctionList"

body = """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.example.com/services/wsdl/2.0">
<soapenv:Header/>
<soapenv:Body>
<ns:serviceListRequest>
<ns:userInfo>
</ns:userInfo>
</ns:serviceListRequest>
</soapenv:Body>
</soapenv:Envelope>"""

request = httplib.HTTPConnection(server_addr)
request.putrequest("POST", service_action)
request.putheader("Accept", "application/soap+xml, application/dime, multipart/related, text/*")
request.putheader("Content-Type", "text/xml; charset=utf-8")
request.putheader("Cache-Control", "no-cache")
request.putheader("Pragma", "no-cache")
request.putheader("SOAPAction", "https://auctions.godaddy.com/gdAuctionsWSAPI/gdAuctionsBiddingWS.asmx?op=GetAuctionList" + server_addr + service_action)
request.putheader("Content-Length", "length")
request.putheader("apiKey", "xxxxxx")
request.putheader("pageNumber", "1")
request.putheader("rowsPerPage", "1")
request.putheader("beginsWithKeyword", "word")
request.endheaders()
request.send(body)
response = request.getresponse().read()

print response
Run Code Online (Sandbox Code Playgroud)

python api soap

12
推荐指数
1
解决办法
4万
查看次数

Django作为SOAP Web服务服务器

我需要在Django/Python中重写一个现有的SOAP服务(我们有一个WSDL文件),你会向我推荐哪些库或解决方案?链接很好.

PS:ZSI可以解析wsdl,但我不喜欢它,它太旧了(可能是我错了)

python django soap web-services

10
推荐指数
1
解决办法
2万
查看次数

哪些python SOAP库仍然维护?

关于StackOverflow上的python SOAP客户端存在很多问题.但是,他们都已经3岁多了.

问题是当前主动维护哪些python SOAP客户端库?

我找到的唯一一个是PySimpleSOAP.还有其他人吗?

python soap

8
推荐指数
2
解决办法
5117
查看次数