执行时:
$html = iwr "http://localhost/..."
我把塞尔维亚人的角色当作垃圾。但是当我执行时:
[Net.HttpWebRequest]$WebRequest =[Net.WebRequest]::Create("http://localhost/...")
[Net.HttpWebResponse]$WebResponse = $WebRequest.GetResponse()
$Reader = New-Object IO.StreamReader($WebResponse.GetResponseStream())
$Response = $Reader.ReadToEnd()
我通常会看到塞尔维亚人的角色。如何使用Invoke-WebRequest获得相同的响应?
更新
Encoding of the response of the Invoke-Webrequest的解决方案并不适合我。问题是这里输出的iwr保存到文件然后加载到变量中。但是,当这样做时,我无法使用ParsedHtml
属性,这是我的主要兴趣。
如果我后来做了上面提到的建议:
$ParsedHtml = New-Object -com "HTMLFILE"
$ParsedHtml.IHTMLDocument2_write($content)
$ParsedHtml.Close()
以下不起作用:
$text = $ParsedHtml.body.getElementsByClassName('content')
$ParsedHtml.title
确实有效但$ParsedHtml.body -eq $null
为真,因此我无法访问元素。当我从iwr.ParsedHtml.body
内部访问body元素时,一切正常(除了提到的编码)。
我也尝试过:
$text = [text.encoding]::UTF8.getstring([text.encoding]::default.GetBytes($text))
虽然某些字符现在正常,但其他字符不是。