In Windows PowerShell 3.0 è stato introdotto il cmdlet Invoke-RestMethod.PowerShell WebRequest POST
Invoke-RestMethod Il cmdlet accetta il parametro -Body<Object>
per l'impostazione del corpo della richiesta.
A causa di alcune limitazioni, nel nostro caso non è stato possibile utilizzare il cmdlet Invoke-RestMethod. Da altra parte, una soluzione alternativa descritta nell'articolo InvokeRestMethod for the Rest of Us adatta alle nostre esigenze:
$request = [System.Net.WebRequest]::Create($url)
$request.Method="Get"
$response = $request.GetResponse()
$requestStream = $response.GetResponseStream()
$readStream = New-Object System.IO.StreamReader $requestStream
$data=$readStream.ReadToEnd()
if($response.ContentType -match "application/xml") {
$results = [xml]$data
} elseif($response.ContentType -match "application/json") {
$results = $data | ConvertFrom-Json
} else {
try {
$results = [xml]$data
} catch {
$results = $data | ConvertFrom-Json
}
}
$results
tuttavia è destinato solo per un metodo GET. Potrebbe suggerire come estendere questo esempio di codice con la possibilità di inviare il corpo della richiesta utilizzando il metodo POST
(simile al parametro Body
in Invoke-RestMethod
)?
grazie, Trevor! Questo è il modo in cui ho pensato che dovrebbe essere implementato, ma non ero sicuro che questo sia il modo migliore –
Siete i benvenuti, @VadimGremyachev :) Sono contento che questo ti abbia aiutato! –
@TrevorSullivan Come sarebbe il corpo se avessi un json su di esso? – Campinho