使用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。