python - 思科 ISE:“资源初始化失败:无效 JSON:当前令牌不是 END_OBJECT”
问题描述
我希望在 Cisco ISE 中执行 PUT 操作,以使用 Python 更改现有网络设备描述。为此,您必须使用您打算在 XML 或 JSON 中执行 PUT 操作的网络设备发送有效负载。就我而言,我使用的是 JSON。这是我的代码:
import requests
import pprint
import urllib3
import json
from requests.auth import HTTPBasicAuth
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
url = 'https://X.X.X.X:9060/ers/config/networkdevice/ze5abe60-918k-14pq-402x-01507619wf2l'
username = 'username'
password = 'password'
headers = {"Content-type": "application/json", "Accept": "application/json"}
valid_cert = False
payload = {
"NetworkDevice": {
"id": "ze5abe60-918k-14pq-402x-01507619wf2l",
"name": "TESTDEVICE",
"description": "YAY IT WORKS",
},
"profileName": "Cisco",
"coaPort": 0,
"link": {
"rel": "self",
"href": "https://X.X.X.X:9060/ers/config/networkdevice/ze5abe60-918k-14pq-402x-01507619wf2l",
"type": "application/json"
},
"NetworkDeviceIPList": [{
"ipaddress": "X.X.X.X",
"mask": 32
}]
}
response = requests.request("PUT", url, data=json.dumps(payload), headers=headers, verify=valid_cert,
auth=HTTPBasicAuth(username, password))
result = response.json()
pprint.pprint(result)
此 Python 代码返回以下内容:http 响应 400,以及以下 http 错误:
{'ERSResponse': {'operation': 'PUT-update-networkdevice', 'messages':
[{'title': "Resource Initialization Failed: Invalid JSON: Current
token not END_OBJECT (to match wrapper object with root name
'NetworkDevice'), but FIELD_NAME\n ", 'type': 'ERROR', 'code':
'Application resource validation exception'}], 'link': {'rel':
'related', 'href':
'https://X.X.X.X:9060/ers/config/networkdevice/ze5abe60-918k-14pq-402x-01507619wf2l',
'type': 'application/xml'}}}
研究官方 Cisco API 文档中的“错误” 'code': 'Application resource validation exception'"
(从上面)只会产生APPLICATION_RESOURCE_VALIDATION_EXCEPTION
当资源语义验证不满足要求时发生的情况。加上 http 响应,向我表明问题出在我的 JSON 有效负载上。
思科 TAC/支持建议:配置文件名称和网络设备 IP 列表 - 有效负载字段是必需的......虽然我不确定我是否同意这一点,因为官方 API 文档中没有提到这一点。
此外,我使用 https://jsonlint.com/仔细检查了我的 JSON 格式/语法
这似乎是正确的。我也尝试过更改:(
data=json.dumps
有效负载) - 在实际请求中只是 data=payload ...没有成功
请指教!谢谢!
解决方案
推荐阅读
- python - 如何训练这个多类 RNN?
- oracle-apex - Oracle Apex 加载没有插件的 excel 数据 .xlsm
- php - 为什么我的 Ajax 请求在 laravel 中无限滚动分页失败?
- c++ - g++-10中如何结合基类显式构造函数和指定初始化?
- flutter - 带有可扩展 itemBuilder 的 ListView - Flutter
- .net-core - MassTransit Azure 服务总线:属性(主题/订阅)的更改未在 Azure 上更新
- asp.net - 是否可以在 .NET 核心 Web 应用程序启动中注册 .NET 框架 DbContext?
- asp.net-mvc - ASP.NET MVC:在表单提交时保存相关实体
- java - 从 Java 中的 Azure B2C Active 中删除用户 [graphClient.users(user-id).buildRequest().delete()]
- java - 带有 mongodb 的石英调度程序在集群环境中不起作用