【发布时间】:2018-06-01 18:41:35
【问题描述】:
我需要使用特定格式的正文执行 Invoke-Webrequest 以将设备添加到产品中。这是它在 json 中的样子(直接来自供应商文档的示例):
$body_json = '{"datasource": [{
"parentId": "123456789000",
"name": "(name)",
"id": "(value)",
"typeId": 0,
"childEnabled": false,
"childCount": 0,
"childType": 0,
"ipAddress": "(ipAddress)",
"zoneId": 0,
"url": "(url)",
"enabled": false,
"idmId": 123456789000,
"parameters": [{
"key": "(key)",
"value": "(value)"
}]
}]}'
当我尝试以它的 json 表示形式提交它时,我收到以下错误:
Invoke-WebRequest:无法反序列化 com.vendor.etc.DataSourceDetail 在 [Source: java.io.StringReader@22c614;行:1,列:1] 在 C:\powershell_script_location\ps.ps1:114 字符 9 + $request = Invoke-WebRequest $url -Method Post -Headers $headers -Body $body_json - ... +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息:无效操作: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
问题在于“参数”的格式,参数因为省略“参数”时请求提交正常,但随后 我添加的设备缺少重要的参数详细信息。
Invoke-WebRequest, JavaScriptSerializer, 有什么问题吗?
供应商的代码,还是这是用户错误?如果需要任何澄清,请告诉我。
很遗憾,我不知道com.vendor.etc.DataSourceDetail 实例是什么样的,因为我使用的是 API,并且无法直接访问它。
【问题讨论】:
-
请允许我给你一个标准的建议给新手:如果一个答案解决了你的问题,请点击它旁边的大复选标记 (✓) 接受它,也可以选择给它投票(up - 投票需要 15 个或更多声望点)。如果您发现其他答案有帮助,请给他们投票。接受(您将获得 2 个声望点)和投票可以帮助未来的读者。请参阅the relevant help-center article。如果您的问题尚未得到完全解答,请提供反馈或self-answer。
标签: json powershell