我开始使用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
有人给我小费吗?
谢谢
答案 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以及获取方法!