如何使用 Powershell 获取 StreamResponseBody 并将其保存为 ZIP 文件
How Do I GET a StreamResponseBody and save it as a ZIP file using Powershell
我正在尝试使用 PowerShell 从标准 http GET 调用中提取流式响应。
我尝试使用这种Invoke-RestMethod
方法来做一些事情,例如:
$response = Invoke-RestMethod -Uri $uri -Method GET -Headers $headers -Body
然后尝试做各种事情,例如以这种方式访问流式响应:
$Stream.Write($response.Content)
或
$Stream.Write($response.RawContentStream)
但没有任何效果。
最后,我发现以下命令既可以调用也可以响应,还可以将结果直接保存到文件中。这让我感到惊讶,因为响应是一个包含 headers 和其他数据的多部分记录,而不仅仅是流中的分块文件。但是 MS 的人显然知道,在 99% 的情况下,对于分块回复,用户只想将流式传输的数据块保存到文件中,而不需要其他响应 header 数据。
$Response = Invoke-WebRequest @Params -Headers $headers -outfile $TempZipFileName
这里的关键是使用带有 -outfile
选项的 Invoke-WebRequest
调用。这让我省去了很多麻烦,而且使用起来超级简单。
我正在尝试使用 PowerShell 从标准 http GET 调用中提取流式响应。
我尝试使用这种Invoke-RestMethod
方法来做一些事情,例如:
$response = Invoke-RestMethod -Uri $uri -Method GET -Headers $headers -Body
然后尝试做各种事情,例如以这种方式访问流式响应:
$Stream.Write($response.Content)
或
$Stream.Write($response.RawContentStream)
但没有任何效果。
最后,我发现以下命令既可以调用也可以响应,还可以将结果直接保存到文件中。这让我感到惊讶,因为响应是一个包含 headers 和其他数据的多部分记录,而不仅仅是流中的分块文件。但是 MS 的人显然知道,在 99% 的情况下,对于分块回复,用户只想将流式传输的数据块保存到文件中,而不需要其他响应 header 数据。
$Response = Invoke-WebRequest @Params -Headers $headers -outfile $TempZipFileName
这里的关键是使用带有 -outfile
选项的 Invoke-WebRequest
调用。这让我省去了很多麻烦,而且使用起来超级简单。