Powershell Invoke-RestMethod响应不完整



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

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

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

所以不知怎么的,我怀疑有一个超时,或者发生了什么事情。但如果是这样的话,那么我尝试使用TimeoutSec参数和一个很大的数字,比如:

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

我运气不好:响应被破坏了(JSON字符串中缺少部分)。

不管怎样,如果涉及超时,它不应该抛出一个错误吗?

另外,可能问题不在客户端,而是在服务器端?我不知道哪一方对此负责。

似乎只有在能够成功转换JSON字符串的情况下,才能从Invoke-RestMethod获得PSObject。对于4MB的响应,这可能不会起作用。您可以通过ConvertFrom-Json传递字符串来自己检查这一点,这可能会引发错误。

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

  • Invoke-RestMethod没有';t使用JSON创建PS对象
  • ConvertFrom Json最大长度

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

最新更新