我正在尝试通过API将数据发布到InsightVM。我不断收到错误400,表示格式错误。我将其分解,问题出在主机名部分。
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
if (host_info.getDataType() == dataType.Web_Vulnerability && methodType == MethodType.Add_host_To_Site)
{
JSONObject json2 = new JSONObject();
json2.put("name",host_info.getHost_fqdn());
json2.put("source", "Splunk");
array.add(json2);
DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
json.put("date",OffsetDateTime.now().format(dtf) );
json.put("ip",host_info.getHost_ip());
json.put("os",host_info.getOperating_system());
json.put("hostNames",array); // problem is here
}
上面的代码是否提供与以下相同的格式:
{
"date": "2019-05-20",
"ip": "00.00.00.00",
"os":"Linux",
"hostNames":
[
{
"name": "corporate-workstation-1102DC.acme.com",
"source": "Splunk"
}
]
}
答案 0 :(得分:0)
JSONArray实现Collection。
虽然JSONObject具有重载的put()方法,
它接受一个Collection并将其包装在JSONArray中,这可能会引起问题。
您可以尝试以下方法吗?
jsonObject.put("hostNames",(Object)array);