Python Zeep:如何判断邮件是否有附件?
Python Zeep: How to determine whether message has an attachment?
我必须查询第三方 SOAP 端点。这个端点有时有附件,有时只有普通的 XML。在收到响应并检查它之前,我无法知道它会是什么。
之前的开发者是这样操作的:
result = client.service.download(
# parameters
)
# TODO remove unresolved reference when I understand zeep library better
# noinspection PyUnresolvedReferences
message_type = zeep.wsdl.attachments.MessagePack
if isinstance(result, message_type):
content = str(result.attachments[0].content, encoding='utf-8')
else:
content = serialize_object(result)["fileContents"]
我想要一种方法来确定我得到的响应类型,而不必抑制来自我的 IDE 的“未解决的引用”投诉。最好避免使用异常进行流量控制,即在调用 result.root
.
时处理 AttributeError
Zeep 是否有一些规范的方法来确定响应是否有附件?我正在努力在文档中找到类似的东西。
我想通了,如果我尝试序列化结果,我可以检查我是否得到了字典。
result = client.service.download(
# parameters
)
_result = serialize_object(result)
if not isinstance(_result, dict):
_result = serialize_object(result.root)
_result["fileContents"] = str(result.attachments[0].content, encoding='utf-8')
# use _result going forward
我必须查询第三方 SOAP 端点。这个端点有时有附件,有时只有普通的 XML。在收到响应并检查它之前,我无法知道它会是什么。
之前的开发者是这样操作的:
result = client.service.download(
# parameters
)
# TODO remove unresolved reference when I understand zeep library better
# noinspection PyUnresolvedReferences
message_type = zeep.wsdl.attachments.MessagePack
if isinstance(result, message_type):
content = str(result.attachments[0].content, encoding='utf-8')
else:
content = serialize_object(result)["fileContents"]
我想要一种方法来确定我得到的响应类型,而不必抑制来自我的 IDE 的“未解决的引用”投诉。最好避免使用异常进行流量控制,即在调用 result.root
.
AttributeError
Zeep 是否有一些规范的方法来确定响应是否有附件?我正在努力在文档中找到类似的东西。
我想通了,如果我尝试序列化结果,我可以检查我是否得到了字典。
result = client.service.download(
# parameters
)
_result = serialize_object(result)
if not isinstance(_result, dict):
_result = serialize_object(result.root)
_result["fileContents"] = str(result.attachments[0].content, encoding='utf-8')
# use _result going forward