我需要使用特定格式的正文执行 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 来自 START_ARRAY 令牌,位于 [来源:
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 + FullQualifiedErrorId :
WebCmdletWebResponseException、Microsoft.PowerShell.Commands.InvokeWebRequestCommand
问题在于“参数”的格式,参数,因为省略“参数”时请求提交正常,但随后
我添加的设备缺少重要的参数详细信息。
有什么问题吗Invoke-WebRequest, JavaScriptSerializer,
供应商的代码,还是用户错误?如果需要任何说明,请告诉我。
不幸的是我不知道什么是com.vendor.etc.DataSourceDetail
实例看起来像,因为我正在使用 API 并且我无法直接访问它。