PowerFlex 3.x De REST API-aanroep "setPassword" retourneert "400 slecht verzoek"
Summary: Tijdens het gebruik van Powershell om te communiceren met de VxFlexOS/PowerFlex REST API, retourneert de functie "setPassword" een "400 bad request". Andere functies werken echter prima, zoals 'resetPassword'. Scenario: Gebruik aangepaste code om het wachtwoord van de aangemelde gebruiker in te stellen met de functie "setPassword" in de REST API. De VxFlexOS/PowerFlex Gateway retourneert een "400" HTML-code voor een slechte aanvraag. Maar andere functies werken nog steeds foutloos. ...
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
In de logboeken of in de opdrachtregel zal iets vergelijkbaars met het volgende worden weergegeven dat "De externe server heeft een fout geretourneerd: (400) Ongeldig verzoek":


Cause
Sommige functies met grotere body-payloads, zoals "setPassword" (waarvoor het oldPassword-object plus waarde en newPassword-object plus waarde nodig zijn) vereisen dat de header ook het inhoudstype "application/json" bevat zodat de VxFlex REST API de post-aanroep correct kan interpreteren.
Resolution
Om dit probleem op te lossen, levert u het inhoudstype op met de webaanvraag, bijvoorbeeld de onderstaande code in PowerShell vereist dat het "-ContentType "application/json" " wordt toegevoegd aan de Invoke-WebRequest-methode om het bericht te laten slagen":
#format the user/pw hash in BASE64 to get it parsed by REST
$head = @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("admin:Scaleio1234"))}
$head
#get token for authorization.
$r = Invoke-WebRequest -Uri https://192.168.199.76/api/login -Method Get -Headers $head -UseBasicParsing
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $r.content.replace('"','')))
$header = @{'Authorization' = "Basic $token"}
$payload2 = @{
oldPassword = 'Scaleio1234'
newPassword = 'Scaleio123'
}
$body2 = Convertto-JSON -InputObject $payload2
Invoke-WebRequest -Uri https://192.168.199.76/api/instances/User/action/setPassword -Headers $header -Method Post -ContentType "application/json" -Body $body2
Hetzelfde kan worden gedaan vanuit Curl of andere programmeertalen:
curl -v -k -X POST -H "Content-Type:application/json" ...
Versies waarop dit van toepassing is
PowerFlex 3.x
Affected Products
PowerFlex SoftwareProducts
PowerFlex rack, PowerFlex Appliance, PowerFlex custom nodeArticle Properties
Article Number: 000194607
Article Type: Solution
Last Modified: 14 Apr 2025
Version: 2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.