Saltar al contenido

Realizar una solicitud POST de PowerShell si un parámetro de cuerpo comienza con ‘@’

Solución:

Debería poder hacer lo siguiente:

$params = @{"@type"="login";
 "username"="[email protected]";
 "password"="yyy";
}

Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body $params

Esto enviará la publicación como el cuerpo. Sin embargo, si desea publicar esto como un Json, es posible que desee ser explícito. Para publicar esto como JSON, puede especificar ContentType y convertir el cuerpo a Json usando

Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body ($params|ConvertTo-Json) -ContentType "application/json"

Extra: También puede utilizar el método Invoke-RestMethod para tratar con las apis JSON y REST (lo que le ahorrará algunas líneas adicionales para la deserialización)

Usar Invoke-RestMethod para consumir REST-API. Guarde el JSON en una cadena y utilícelo como cuerpo, por ejemplo:

$JSON = @'
{"@type":"login",
 "username":"[email protected]",
 "password":"yyy"
}
'@

$response = Invoke-RestMethod -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"

Si usa Powershell 3, sé que ha habido algunos problemas con Invoke-RestMethod, pero debería poder usar Invoke-WebRequest como un reemplazo:

$response = Invoke-WebRequest -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"

Si no desea escribir su propio JSON cada vez, puede usar una tabla hash y usar PowerShell para convertirlo a JSON antes de publicarlo. Ex.

$JSON = @{
    "@type" = "login"
    "username" = "[email protected]"
    "password" = "yyy"
} | ConvertTo-Json
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *