2010-08-26 102 views

回答

22

我創造了這個獲取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-JsonConvertFrom-Json cmdlet。你的代碼最終會看起來像:

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

而且甚至不應該是一個需要對所得到的$stuff調用ConvertFrom-Json =>它已經在使用非字符串格式。

查看http://technet.microsoft.com/en-us/Library/hh849971.aspx瞭解詳情。

+0

這是否適用於SharePoint 2010? – craig 2015-01-07 15:53:30

+0

您可能還需要提供憑證。在這種情況下,您將執行諸如$ stuff = Invoke-RestMethod -Uri $ url -Method Get -Credential「domain \ username」的命令。 – 2015-10-08 15:11:35

+0

有沒有辦法傳入Basic Auth的憑證? Jubblerbug所說的工作是展示一個彈出窗口詢問密碼,但我需要自動執行此 – 2017-04-13 16:47:09

5

我們使用Powershell來查詢僅處理Json樣式數據的REST API。它起初很尷尬,但下面的代碼是我們需要執行大多數操作的所有東西:

# 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

這是您在生產中用於使用Web服務的powershell? – Thufir 2018-02-16 19:04:57

+0

我回答了一個與通過PowerShell與JSON API交互有關的特定問題。我從未說過我會在生產中使用此代碼。 – ShaneC 2018-02-22 16:38:01