Итак, после публикации моего более раннего вопроса о cURL в PowerShell Hash Table (который был решен), я столкнулся с еще одной проблемой преобразования cURL в PowerShell на этот раз с 3 хеш-таблицами в данных (?) (Или, более вероятно,мои навыки PowerShell).На этот раз мой скрипт через PowerShell возвращает:
...General Error java.util.LinkedHashMap cannot be cast to java.util.List
Вот cURL, который отлично работает через Почтальон:
curl -X PATCH \
https://example.com/apis/v1.1/parameters \
-H 'Authorization: Bearer 1234567890' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d '{
"data": [
{
"DUID": 3299,
"AID": 551,
"CID": 10002,
"Parameters": [
{
"name": "Customer.1/AddressLine1",
"value": "SOMEWHERE ROAD"
}
]
}
]
}'
Вот скрипт PowerShell, который я построил, используя советы, данные вмой предыдущий вопрос здесь:
cURL в PowerShell - Двойная хеш-таблица в --data?
$CURLEXE = 'C:\Windows\System32\curl.exe'
$URL1 = "https://example.com/apis/v1.1/parameters"
$Body = @{
'data'= @{
'DUID'= 3299;
'AID'= 551;
'CID'= 10002;
'Parameters'=
@{'name'= "Customer.1/AddressLine1";
'value'= "SOMEWHERE ROAD"}
}
}
$CurlArgument = '-X', 'PATCH',
$URL1,
'-H',
$AuthBearer,
'-H', 'Content-Type: application/json',
'-H', 'cache-control: no-cache',
'-d',
(($Body | ConvertTo-Json) -replace '"', '\"')
& $CURLEXE @CurlArgument
Мой $ CurlArgument выглядит следующим образом:
-X
PATCH
https://example.com/apis/v1.1/parameters
-H
Authorization: Bearer 1234567890
-H
Content-Type: application/json
-H
cache-control: no-cache
-d
{
\"data\": {
\"CID\": 10002,
\"DUID\": 3299,
\"AID\": 551,
\"Parameters\": {
\"value\": \"SOMEWHERE ROAD\",
\"name\": \"Customer.1/AddressLine1\"
}
}
}
Что возвращает эту ошибку:
{"status": "FAILURE", "errors": [{"code": "5004", "name": "General Error","severity": "3", "message": "Ошибка во время операции", "details": {"5004": "Общая ошибка java.util.LinkedHashMap не может быть преобразована в java.util.List"}}]}
Может ли быть косая черта в поле 'Customer.1 / AddressLine1'?Я попробовал второе место с этими и все еще получил ту же ошибку:
(($Body | ConvertTo-Json) -replace '"', '\"' -replace '/', '\/')
(($Body | ConvertTo-Json) -replace '"', '\"' -replace '/', '\2f')
(($Body | ConvertTo-Json) -replace '"', '\"' -replace '/', '\%2f')
Может ли быть отсутствие квадратных скобок в хэш-таблице данных?Они есть в cURL, но не в PowerShell, однако в моем предыдущем скрипте у меня не было квадратных скобок, плюс PowerShell, похоже, не нравится.
Может быть это порядок "value" и "имя "изменяется PowerShell?
Любая помощь будет принята с благодарностью.
Обновление Благодаря помощи, которая так далеко от @ mklement0, яотредактировал мой PowerShell в соответствии со следующим:
$Body = @{
data = , @{
DUID = 3299
AID = 551
CID = 10002
Parameters = , @{
name = "Customer.1/AddressLine1"
value = "SOMEWHERE ROAD"
}
}
}
$CurlArgument = '-X', 'PATCH',
'https://example.com/apis/v1.1/parameters',
'-H',
$AuthBearer,
'-H', 'Content-Type: application/json',
'-H', 'cache-control: no-cache',
'-d',
(($Body | ConvertTo-Json -Depth 4) -replace '"', '\"')
& $CURLEXE @CurlArgument