REST的响应(通过Powershell的POST)未完成

时间:2018-11-21 12:35:30

标签: rest powershell response

我开始使用Powershell的Invoke-RestMethod,现在遇到的问题是,我对监控工具的REST API进行POST后获得的响应不完整。如果我正在使用其他工具,例如用于浏览器的REST扩展,我会得到更多反馈:

响应REST扩展Web浏览器:

{
   "entry": [
      {
         "@datatype": "int",
         "@name": "CheckTime",
         "value": {
            "@type": "xs:int",
            "$": "1542802849"
         }
      },
      {
         "@datatype": "int",
         "@name": "AvailPageFile",
         "value": {
            "@type": "xs:int",
            "$": "12345"
         }
      }
   ]
}

响应Powershell调用静态方法:

entry
-----
@{@datatype=int; @name=CheckTime; value=} @{@datatype=int; @name=AvailPageFile; value=}

因此缺少Value =之后的{}的第二级。

这是我的代码:

$username = "user"
$password = "password"
$url = "http://urlREST"

$headers = @{
    "Authorization" = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($username):$($password)")); 
    "Accept" = 'application/json ';
}


$data = @{}
$body = ConvertTo-Json $data

Invoke-RestMethod -Uri $url -Headers $headers -ContentType "application/json" -Method Post -Body $body 

有人给我小费吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您基本上得到相同的响应,但是它在PSobject内部。请尝试以下操作:

$response = Invoke-RestMethod -Uri $url -Headers $headers -ContentType "application/json" -Method Post -Body $body

现在开始使用$ response参数,例如:

$response.entry
$response.entry.name

Etcetera。也可以执行以下操作:

$response.gettype()

了解有关PowerShell对象的更多信息。如果仍然不能提供正确的信息,请搜索responseStream以及获取方法!