Powershell Invoke-RestMethod不完整的响应

时间:2016-05-04 15:09:00

标签: json rest http powershell

使用PowerShell 5,我通过执行以下操作从REST端点下载:

$result = Invoke-RestMethod -Method Get -Uri "http://example.com/endpoint/item"

结果是4Mb +大小的aprox。有时$result不是我期望的PSObject,而是一个字符串,其中包含不完整的JSON响应。

所以不知怎的,我怀疑有一个超时,或者发生了什么。但如果那就是那件事,那么我尝试使用TimeoutSec参数和一个非常大的数字,如下所示:

$result = Invoke-RestMethod -Method Get -Uri "http://example.com/endpoint/item" -TimeoutSec 10000

我没有运气:响应被破坏了(JSON字符串上缺少部分)。

无论如何,如果涉及超时,是否应该抛出错误?

另外,可能问题不在客户端,而是服务器端?我对这方面的责任感到困惑。

1 个答案:

答案 0 :(得分:1)

如果能够成功转换JSON字符串,您似乎只能从Invoke-RestMethod获取PSObject。对于4MB响应,这可能不起作用。您可以通过将字符串传递给ConvertFrom-Json来自行检查,这可能会引发错误。

最近在这里回答了类似的问题:

简而言之,您需要创建一个JavaScriptSerializer并适当地设置MaxJsonLength。