【问题标题】:Unable to send deserialized data to a Web API无法将反序列化数据发送到 Web API
【发布时间】:2018-06-07 07:26:30
【问题描述】:

我正在尝试使用我以前用于各种工作的 API 来查询和获取相关数据。但是最近,由于返回了一个不寻常的异常,我无法做到这一点,老实说,我对此一无所知。

守则:

import SIEMAuth
import requests
alert_id = '144116287822364672|12101929'

query_params = {"id":   {"value": alert_id}, "format": {"format": 0}}
print(requests.post(SIEMAuth.url + 'ipsGetAlertPacket', json=query_params,  headers=SIEMAuth.session_headers, verify=False).text)

查询时返回以下异常/回溯响应:

Can not construct instance of com.mcafee.siem.api.data.alert.EsmPacketFormat: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)
 at [Source: java.io.StringReader@1a15fbf; line: 1, column: 2]

Process finished with exit code 0

在尝试上网以了解有关异常的更多信息时,大多数结果都与 Java 编程环境中的 Jackson Parser for Json 相关,这不是我正在研究或不知道的事情。

如果有人可以提供帮助,我将非常感激.....

【问题讨论】:

  • 服务器端发生错误可能是因为您在请求中发送的内容不是服务器所期望的。您应该检查此 API 的要求。
  • @SergeBallesta 这就是我的想法,但如前所述,这个异常是不寻常的,因为我已经通过这个 API 查询了很多次,而这件事是第一次出现。此外,我只想知道它的本质含义。如果需要,我可以发布 api 调用要求。
  • 不幸的是,我认为 API 刚刚损坏或文档不正确。他们的文档提供了{"id": "(value)", "format": {"format": 0}} 的示例json 正文,这是@DevanshuMisra 提供的。我一直在使用 McAfee ESM 10.2.0 对此进行研究,但遇到了同样的问题。

标签: python api jsonexception


【解决方案1】:

不幸的是,正如我所建议的那样;基本上以一种或另一种方式坏了。他们的支持回应如下。

我已就这个问题联系了我的开发团队。我得到了以下回复。

该特定 get 并不打算在外部 API 中使用。它只能从界面中使用,并且自您所在的 ESM 版本以来已被删除。如果你想在外部使用它,那么你需要提交它。

我希望这能解决您的问题。

编辑:这实际上已经在他们的支持论坛上的一个线程中进行了扩展。您需要登录才能看到the original thread

尽管有名称,但此 API 不会返回与事件关联的实际数据包。事实上,启用聚合后,并非所有与给定事件相关的数据包都在 ESM 上可用。可以通过 UI 从 ELM 检索原始数据包数据,但遗憾的是,目前还没有一种方法可以通过编程方式进行。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 2016-10-02
    • 2017-06-09
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    相关资源
    最近更新 更多