作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有状态页面的网络设备,该页面可以通过Java小程序访问。使用Fiddler,我可以找到状态的http提要,但是页面会不断刷新。 (Firefox会显示该页面,但会保持刷新状态,Chrome会将其视为无扩展名的文件,并尝试保存它,但由于总有更多数据,因此无法完成。)
状态页面使用NTLM身份验证,因此尽管我将使用Invoke-Webrequest。以下代码登录并开始下载页面,但是由于其恒定的数据流永远无法完成:
$url = "http://xxx.xxx.xxx.xxx/api/notify"
$user = "user"
$pass= "password"
$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($user, $secpasswd)
$data = Invoke-restmethod $url -Credential $credential
最佳答案
我认为Invoke-WebRequest
不可行,但是您可以改用.NET WebRequest
和StreamReader
类。例:
$sUri = "http://www.w3.org" # Replace with your URI
$sEncoding = "utf-8"
$iCharactersToRead = 1000 # How many characters we want to read
$sAuthType = "NTLM"
$sUserName = "username"
$sPassword = "password"
# Creating a new HttpWebRequest object.
[System.Net.HttpWebRequest]$oHttpWebRequest = [System.Net.WebRequest]::Create($sUri)
# This may be superflous if your HTTP server doesn't use compression.
$oHttpWebRequest.AutomaticDecompression = `
([System.Net.DecompressionMethods]::Deflate `
-bor [System.Net.DecompressionMethods]::GZip)
# Since you have NTLM auth, you need to add a credential.
$oCredential = New-Object -TypeName System.Net.NetworkCredential($sUserName, $sPassword)
$oCredentialCache = New-Object -TypeName System.Net.CredentialCache
$oCredentialCache.Add($sUri, "NTLM", $oCredential)
$oHttpWebRequest.Credentials = $oCredentialCache
# Creating a StreamReader object that will read the response stream.
$oResponseStream = $oHttpWebRequest.GetResponse().GetResponseStream()
$oContentReader = New-Object -TypeName System.IO.StreamReader($oResponseStream,
[System.Text.Encoding]::GetEncoding($sEncoding), $true)
# Trying to read the specified number of characters from the stream.
$sContent = [String]::Empty
try {
for ($i = 0; $i -lt $iCharactersToRead; $i++) {
$sContent += [Char]$oContentReader.Read()
}
}
finally {
$oContentReader.Close()
}
utf-8
,您可能需要指定其他编码名称,具体取决于HTTP服务器使用的编码。有关更多详细信息,请参见
Encoding.WebName引用。
关于powershell - 如何在Powershell中转义Invoke-Webrequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794551/
我是一名优秀的程序员,十分优秀!