以编程方式为 python 中的 SOAP 端点调用 RPC 方法
Programmatically invoke RPC methods for a SOAP endpoint in python
我正在寻找一种通过 Python 以编程方式调用 SOAP/RPC 的简单方法。类似于:
method_to_invoke, args = parse_user_input()
outbound_xml = library.call_remote_method(method_to_invoke, args)
result = requests.post(... data=outbound_xml)
我知道有 several Python 库支持 SOAP/RPC 调用;但是他们都做了一些 "magic" 并允许这样的事情:
result = client.service.getPercentBodyFat('jeff', 68, 170)
(前面的例子取自 suds documentation 但基本原理是一样的)。这假设我提前知道方法的名称并且无法在运行时确定它。
正在寻找不再维护或尝试做太多的解决方案 "magic"。例如,参见 this over-complicated soution or this solution,它基本上是 "Build your own XML and send it over"。
是否有任何库可以为我构建 "outbound" XML 而无需费力?我已经有一个 HTTP 服务器可以接收入站 RPC 并希望使用 requests
来正确处理诸如 SSL 证书验证之类的事情。
你可以给python-zeep一个机会(http://docs.python-zeep.org)。它可以通过以下代码轻松生成您要发送的 xml:
client = zeep.Client(
wsdl='http://www.webservicex.net/ConvertSpeed.asmx?WSDL')
doc = client.service._binding.create_message('ConvertSpeed', 100,
'kilometersPerhour', 'milesPerhour'))
print(etree.tostring(doc, pretty_print=True))
(我是作者,如果您对此有任何问题,请告诉我)
我正在寻找一种通过 Python 以编程方式调用 SOAP/RPC 的简单方法。类似于:
method_to_invoke, args = parse_user_input()
outbound_xml = library.call_remote_method(method_to_invoke, args)
result = requests.post(... data=outbound_xml)
我知道有 several Python 库支持 SOAP/RPC 调用;但是他们都做了一些 "magic" 并允许这样的事情:
result = client.service.getPercentBodyFat('jeff', 68, 170)
(前面的例子取自 suds documentation 但基本原理是一样的)。这假设我提前知道方法的名称并且无法在运行时确定它。
正在寻找不再维护或尝试做太多的解决方案 "magic"。例如,参见 this over-complicated soution or this solution,它基本上是 "Build your own XML and send it over"。
是否有任何库可以为我构建 "outbound" XML 而无需费力?我已经有一个 HTTP 服务器可以接收入站 RPC 并希望使用 requests
来正确处理诸如 SSL 证书验证之类的事情。
你可以给python-zeep一个机会(http://docs.python-zeep.org)。它可以通过以下代码轻松生成您要发送的 xml:
client = zeep.Client(
wsdl='http://www.webservicex.net/ConvertSpeed.asmx?WSDL')
doc = client.service._binding.create_message('ConvertSpeed', 100,
'kilometersPerhour', 'milesPerhour'))
print(etree.tostring(doc, pretty_print=True))
(我是作者,如果您对此有任何问题,请告诉我)