2010-08-26 10 views

Antwort

22

Ich habe dieses Get-Http-Funktion 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() 

Der Umgang mit dem Endergebnis als XML ist wirklich einfach, aber fordert zu machen, wenn Sie JSON verarbeiten möchten Sie wahrscheinlich wie eine Net-Bibliothek benötigen JSON.Net.

42

Sie möchten die PowerShell 3 und ihre Invoke-RestMethod, ConvertTo-Json und ConvertFrom-Json Cmdlets. Ihr Code wird am Ende aussehen wie:

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

und es sollte nicht einmal notwendig sein, rufen Sie ConvertFrom-Json auf den resultierenden $stuff => es ist bereits in einem brauchbaren nicht-String-Format.

Weitere Informationen finden Sie unter http://technet.microsoft.com/en-us/Library/hh849971.aspx.

+0

Funktioniert dies mit SharePoint 2010? – craig

+0

Sie müssen möglicherweise auch Anmeldeinformationen angeben. In diesem Fall würden Sie einen Befehl wie $ stuff = Invoke-RestMethod -Uri $ url -Method Get -Credential "Domäne \ Benutzername" machen. –

+0

Gibt es eine Möglichkeit, die Anmeldeinformationen für Basic Auth zu übergeben? Was Jubblerbug gesagt hat funktioniert, um ein Popup zu präsentieren, das nach dem Passwort fragt, aber ich muss das automatisieren –

5

Wir verwenden PowerShell, um eine REST-API abzufragen, die sich nur mit JSON-Daten befasst. Es war zunächst peinlich, aber der folgende Code ist alles, was wir für die meisten Operationen benötigen:

# 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

das ist Powershell, das Sie in der Produktion verwenden, um Web-Services zu konsumieren? – Thufir

+0

Ich habe eine spezifische Frage zur Interaktion mit einer JSON-API über PowerShell beantwortet. Ich habe nie gesagt, dass ich diesen Code in der Produktion verwenden würde. – ShaneC

Verwandte Themen