调用包含连字符的webservice方法

2024-05-20 23:56:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用zeep模块调用sapweb服务。我们有一个名为“-CTSH-HC\u RFC\u XCHG\u RATE\u UPLOAD”的web服务方法,当尝试调用该方法时,得到错误消息 “服务没有操作“\”。由于方法名有连字符,python不考虑连字符后面的字符串。你知道吗

message = client.service_-CTSH_-HC_RFC_XCHG_RATE_UPLOAD()

注意:我们不能更改sapweb服务方法名,因为SAP团队遵循方法名的特定命名约定。你知道吗


Tags: 模块方法字符串hcweb消息raterfc
2条回答

这不是有效的python语法。Python将代码解析为:

client.service_ - CTSH_-HC_RFC_XCHG_RATE_UPLOAD()

client.service_和该函数调用的减法。你知道吗

您可以尝试改用getattr

method = getattr(client, "service_-CTSH_-HC_RFC_XCHG_RATE_UPLOAD")
method()   # call the method

假设zeep没有以其他方式“规范化”无效的方法名。你知道吗


工作示例:

>>> class A:
...     pass
... 
>>> setattr(A, "service_-CTSH_-HC_RFC_XCHG_RATE_UPLOAD", lambda self: print('called'))
>>> 
>>> a = A()
>>> getattr(a, "service_-CTSH_-HC_RFC_XCHG_RATE_UPLOAD")()
called
>>> method = getattr(a, "service_-CTSH_-HC_RFC_XCHG_RATE_UPLOAD")
>>> method
<bound method <lambda> of <__main__.A object at 0x7f4651c5e518>>
>>> method()
called

你试过这个吗?你知道吗

import client.service

method_called =  __import__("_-CTSH_-HC_RFC_XCHG_RATE_UPLOAD")

Reference

相关问题 更多 >