PowerFlex 3.x La llamada de la API REST "SetPassword" devuelve "400 Solicitud incorrecta"
Summary: Mientras se utiliza PowerShell para interactuar con la API REST de VxFlexOS/PowerFlex, la función "setPassword" devuelve una "solicitud incorrecta 400". Sin embargo, otras funciones funcionan bien, como "resetPassword". Caso: Utilice el código personalizado para establecer la contraseña de los usuarios que iniciaron sesión con la función "setPassword" en la API REST; el gateway de VxFlexOS/PowerFlex devuelve un código HTML "400" de solicitud incorrecta. Sin embargo, otras funciones siguen funcionando sin errores. ...
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
En los registros o en la línea de comandos, algo similar a lo siguiente mostrará que "El servidor remoto devolvió un error: (400) Solicitud incorrecta":


Cause
Algunas funciones que tienen cargas útiles de cuerpo más grandes, como "setPassword" (que requiere el objeto oldPassword más valor y el objeto newPassword más valor), requieren que el encabezado también incluya el tipo de contenido "application/json" para que la API REST de VxFlex interprete correctamente la llamada posterior.
Resolution
Para resolver este problema, proporcione el tipo de contenido con la solicitud web; por ejemplo, el siguiente código en PowerShell requiere que "-ContentType "application/json" se agregue al método Invoke-WebRequest para que la publicación se realice correctamente":
#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
Lo mismo se puede hacer desde Curl u otros lenguajes de programación:
curl -v -k -X POST -H "Content-Type:application/json" ...
Versiones afectadas
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.