Мне нужно выполнить 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 на [Source: java.io.StringReader@22c614;строка: 1, столбец: 1] В C: \ powershell_script_location \ ps.ps1: 114 char 9 + $ request = Invoke-WebRequest $ url -Metod Post -Headers $ headers -Body $ body_json - ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (System.Net.HttpWebRequest: HttpWebRequest) [Invoke-WebRequest],WebException + FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Проблема связана с форматом «параметров», параметр, потому что запрос передает нормально при пропуске «параметров», но затемНа устройствах, которые я добавляю, отсутствуют важные детали параметров.
Что-то не так с Invoke-WebRequest, JavaScriptSerializer,
кодом поставщика или это ошибка пользователя?Дайте мне знать, если требуется какое-либо разъяснение.
К сожалению, я не знаю, как выглядит экземпляр com.vendor.etc.DataSourceDetail
, так как я использую API, и у меня нет прямого доступа к нему.