目前,我向外部网站提交了一个POST请求,然后我应该得到一个zip文件作为回报。我可以得到压缩文件,但它是以xml格式提供的,只有name.zip,并且没有下载任何内容。我不知道为什么它不能下载。我的代码在我发出实际请求的地方如下。我不确定我是不是设计过度了,或者我还需要做些什么才能下载到实际的文件。
$url = "https://thewebsite.net/v6_1?id=$messageID"
Write-Output($url)
$Body = [byte[]][char[]]$xmlMessage
Write-Output($Body)
$Request = [System.Net.HttpWebRequest]::CreateHttp($url);
$Request.Method="POST"
$Request.ContentType = 'text/xml;charset=utf-8'
$Request.ContentLength = $Body.Length
$Request.ClientCertificates.Add($Certificate)
Write-Output($Request.ClientCertificates)
$Stream = $Request.GetRequestStream();
$Stream.Write($Body, 0, $Body.Length);
$Response = $Request.GetResponse()
$totalLength = [System.Math]::Floor($Response.get_ContentLength()/1024)
$responseStream = $Response.GetResponseStream()
$targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList "D:\path\to\save\test.txt", Create
$buffer = new-object byte[] 1GB
$count = $responseStream.Read($buffer,0,$buffer.length)
$downloadedBytes = $count
while ($count -gt 0)
{
[System.Console]::CursorLeft = 0
[System.Console]::Write("Downloaded {0}K of {1}K", [System.Math]::Floor($downloadedBytes/1024), $totalLength)
$targetStream.Write($buffer, 0, $count)
$count = $responseStream.Read($buffer,0,$buffer.length)
$downloadedBytes = $downloadedBytes + $count
Write-Output($count)
}
$targetStream.Flush()
$targetStream.Close()
$targetStream.Dispose()
$responseStream.Dispose()发布于 2020-01-11 05:42:32
不幸的是,如果没有特定的下载URI,就很难澄清你的情况是不是很重要,或者你只是选择了非最佳的方式来获取远程文件。使用Power-Shell获取".zip“(或任何其他'octet/stream‘文件)的常规方法是执行以下命令
Invoke-WebRequest -uri "https://thewebsite.net/v6_1?id=$messageID" -Method "GET" -Outfile (-join($messageID,".zip")) 然后在执行Power-Shell的目录中创建$messageID.zip文件,控制台窗口中会自动显示该进程。我在写答案之前测试了这个例子,当远程主机在响应中实际返回"octet/stream“时,它在方法"POST"/"GET”上独立工作。也许在您的情况下,文件在请求后没有直接返回
网站.net/v6_1?id=$messageID
但这不是你最初问题的重点。
发布于 2020-01-11 05:48:11
您尝试过使用Invoke-WebRequest吗?
$path = [Environment]::GetFolderPath("MyDocuments")
Invoke-WebRequest "example.com" -OutFile "$path\ZippedFile.zip"不必使用变量,因为如果需要,可以在Invoke-WebRequest行中完全定义路径。
https://stackoverflow.com/questions/59687727
复制相似问题