我正在寻找一种通过Python以编程方式调用SOAP/RPC调用的简单方法。例如:以编程方式为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支持SOAP/RPC调用的Python库;然而,他们都做了一些“神奇”,让喜欢的事情:(从suds documentation采取了前面的例子,但基本原理都是一样的)
result = client.service.getPercentBodyFat('jeff', 68, 170)
。这假设我提前知道方法的名称,并且无法在运行时确定它。
寻找解决方案,他们不再维护,或尝试做太多“魔术”。例如,请参阅this over-complicated soution或this solution,这基本上是“构建您自己的XML并将其发送”。
是否有任何库可以为我构建“出站”XML,而不必经过这些环节?我已经有了一个HTTP服务器,它将接收入站RPC并希望使用requests
正确处理SSL证书验证等事情。
是有一个原因,你可以不使用泡沫之类的东西,并选择使用反射的方法(如getattr)?除了方法名称之外,还有其他需要动态的东西吗? – Charlie
@Charlie照顾在答案中提供一个例子吗?反思可能会起作用,这似乎是我宁愿避免的不必要的复杂情况。我了解RPC库旨在简化生活,但缺乏易于扩展的pythonic,简单的似乎很荒谬。 – lorenzog
好的抱歉,我没有解决方案。根据我的经验,SOAP意味着变得脆弱 - 您与服务建立“契约”,然后如果它发生变化,那么会有一个大瀑布进程来进行更新。 – Charlie