W Windows PowerShell 3.0 wprowadzono Invoke-RestMethod cmdlet.PowerShell WebRequest POST
Invoke-RestMethod cmdlet przyjmuje parametr -Body<Object>
do ustawiania treści żądania.
Ze względu na pewne ograniczenia nie można było użyć cmdlet w naszym przypadku. Z drugiej strony, alternatywne rozwiązanie opisane w artykule InvokeRestMethod for the Rest of Us pasuje do naszych potrzeb:
$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
Jednak jest ona przeznaczona tylko dla metody GET. Czy możesz sugerować, jak rozszerzyć tę próbkę kodu z możliwością wysłania treści żądania za pomocą metody POST
(podobnie do parametru Body
w Invoke-RestMethod
)?
dziękuję, Trevor! To jest sposób, w jaki myślałem, że powinien być zaimplementowany, ale nie był pewien, czy to jest najlepszy sposób. –
Nie ma za co, @VadimGremyachev :) Cieszę się, że to pomogło! –
@ TrevorSullivan Jak wyglądałoby ciało, jeśli mam na nim json? – Campinho