在Powershell中使用参数和列表创建帖子正文

时间:2017-03-02 17:42:18

标签: rest api powershell

我正在尝试使用REST API,我可以通过POST添加项目列表。但是,我似乎无法获得正确的身体格式。文档说它正在寻找一个名为“data”的参数,其类型为body,数据类型为数组。为数据提供的示例显示了[“String”,“String”,“String”]我在供应商论坛上寻求帮助,但很少有用户似乎使用PowerShell。

我收到以下错误:

“Invoke-RestMethod:{”message“:”必须为body参数填充请求正文\“data \”“,”details“:{},”description“:”“,”code“:10,” http_response“:{”message“:”请求格式正确但由于语义错误而无法遵循“,”代码“:422}}”

我为身体尝试了很多不同的格式,但似乎都没有。以下是我一直在尝试的例子:

$apiKey = "XXXXXXXXXXXXXXXXXXXXXX"
$url = "https://X.X.com"
$URI = "https://X.X.com/api/reference_data/sets/bulk_load/APITest"

Invoke-RestMethod -Method Post -Uri $URI -Body (convertto-json $body) -Header @{"SEC"= $apiKey }

$body = @{"10.10.1.5","10.10.1.5","50.50.50.50","123.45.6.7"}

我也尝试过类似的事情:

$body = @{"data"="body";"value"="10.10.1.5","50.50.50.50","123.45.6.7"} | convertto-json

但后来我收到了这个错误:

Invoke-RestMethod:{“message”:“beginObject()期望JSON数组,而不是JSON的对象开始”,“details”:{},“description”:“解析JSON格式的消息时出错 body“,”code“:1001,”http_response“:{”message“:”提供了此请求的语法无效“,”code“:400}} 在Z:\ Tools \ Scripts \ PowerShell \ RefSetPostExample.ps1:24 char:1 + Invoke-RestMethod -Method Post -Uri $ URI -Body $ body -contenttype“ap ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~     + CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke-RestMethod],WebException     + FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

提前感谢您对此提出的任何建议。

1 个答案:

答案 0 :(得分:1)

感谢@ 4c74356b41的实用建议我发现:

http://wahlnetwork.com/2016/02/18/using-powershell-arrays-and-hashtables-with-json-formatting/

答案是这样做:

$ body = @(" 10.10.50.50"," 10.50.1.5")|的ConvertTo-JSON

谢谢!