2010-08-26 16 views

ответ

22

Я создал эту функцию 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.

42

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

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

и не должен быть даже необходимо вызвать ConvertFrom-Json на результирующий $stuff => это уже в удобном формате нестрокового.

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

+0

Будет ли это работать с SharePoint 2010? – craig

+0

Возможно, вам также потребуется предоставить учетные данные. В этом случае вы должны сделать команду, например $ stuff = Invoke-RestMethod -Uri $ url -Method Get -Credential "domain \ username". –

+0

Есть ли способ передать учетные данные для Basic Auth? Что сказал Jubblerbug, чтобы представить всплывающее окно с просьбой ввести пароль, но мне нужно автоматизировать этот –

5

Мы используем Powershell для запроса API REST, который использует только данные стиля 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) 
+0

, который вы используете в производстве для использования веб-сервисов? – Thufir

+0

Я отвечал на конкретный вопрос, связанный с взаимодействием с API JSON через PowerShell. Я никогда не говорил, что буду использовать этот код в производстве. – ShaneC

Смежные вопросы