Вызовите REST API из скрипта PowerShell - PullRequest
42 голосов
/ 26 августа 2010

Как я могу вызвать API на основе отдыха из скрипта PowerShell и обработать ответ Json?

Ответы [ 3 ]

46 голосов
/ 07 ноября 2012

Что вам нужно, так это PowerShell 3 и его Invoke-RestMethod, ConvertTo-Json и ConvertFrom-Json командлеты.Ваш код будет выглядеть примерно так:

 $stuff = Invoke-RestMethod -Uri $url -Method Get;

, и даже не нужно будет вызывать ConvertFrom-Json для полученного $stuff => он уже находится в пригодном для использования нестроковом формате.1009 *

Подробнее см. http://technet.microsoft.com/en-us/Library/hh849971.aspx.

22 голосов
/ 26 августа 2010

Я создал эту функцию Get-Http для выполнения HTTP-запросов

param([string]$url)

$req = [System.Net.WebRequest]::Create($url)
$req.Method ="GET"
$req.ContentLength = 0

$resp = $req.GetResponse()
$reader = new-object System.IO.StreamReader($resp.GetResponseStream())
$reader.ReadToEnd()

Работа с конечным результатом в виде XML очень проста, однако, если вы хотите обработать JSON, вам, вероятно, понадобится библиотека .Netкак JSON.Net.

5 голосов
/ 10 июля 2015

Мы используем Powershell для запроса REST API, который работает только с данными стиля Json. Сначала это было неудобно, но приведенный ниже код - это все, что нам нужно для выполнения большинства операций:

# Authentication
$webclient = New-Object System.Net.WebClient
$creds = New-Object System.Net.NetworkCredential("MyUsername","MyPassword");
$webclient.Credentials = $creds

# Data prep
$data = @{Name='Test';} | ConvertTo-Json

# GET
$webClient.DownloadString($url) | ConvertFrom-Json

# POST
$webClient.UploadString($url,'POST',$data)

# PUT
$webClient.UploadString($url,'PUT',$data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...