9

我正在尝试从 URL 检索 XML 流。对于大多数 URL,我下面的代码可以正常工作。但是,我有几个 URL 超时。有问题的 URL 可以在Internet Explorer 中使用。

$webclient=New-Object "System.Net.WebClient"
[xml]$data=$webclient.DownloadString($url)

所以,我去寻找一种增加超时时间的方法。根据我的阅读,我相信我不能使用System.Net.WebClient. 我想我需要System.Net.WebRequest改用,但我无法让它工作。我一直在处理的代码如下:

$myHttpWebRequest = [system.net.WebRequest]::Create($url)
$myHttpWebRequest.Timeout = 600000
$myHttpWebResponse = $myHttpWebRequest.GetResponse()
$sr = New-Object System.IO.StreamReader($response.GetResponseStream())
[xml]$xml = [xml]$sr.ReadToEnd()

我试图访问的 URL 是我公司内部的,所以我不能发布它们。但是,它们确实在 IE 中工作,实际的 URL 应该是无关紧要的。

想法?

编辑:初步测试表明添加$myHttpWebRequest.AuthenticationLevel = "None"有效。谢谢斯科特萨德。

4

1 回答 1

6

默认情况下WebRequest.AuthenticationLevel设置为MutualAuthRequested,因此它将等待某种类型的身份验证响应。因此,在等待身份验证发生时可能会超过超时。看起来您并没有弄乱凭据,所以除非您需要身份验证,否则您可能不需要这个。创建WebRequest后尝试以下操作:

$myHttpWebRequest.AuthenticationLevel = "None"

我希望这有助于解决问题。

于 2008-10-16T18:55:45.520 回答