2010-08-26 83 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