Powershell - увеличьте время ожидания для извлечения XML из URL - PullRequest
9 голосов
/ 16 октября 2008

Я пытаюсь получить поток XML из URL. Для большинства URL мой код ниже работает нормально. Но у меня есть пара URL-адресов на этот тайм-аут. Рассматриваемые URL do работают из 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 не имеет значения.

Идеи

EDIT: предварительное тестирование показывает, что добавление $myHttpWebRequest.AuthenticationLevel = "None" работает. Спасибо Скотт Саад.

1 Ответ

6 голосов
/ 16 октября 2008

По умолчанию WebRequest.AuthenticationLevel установлен на MutualAuthRequested , поэтому он будет ожидать некоторого типа ответа аутентификации. Поэтому время ожидания, вероятно, превышено в ожидании аутентификации. Похоже, вы не работали с учетными данными, поэтому, если вам не требуется аутентификация, вам, вероятно, это не понадобится. Попробуйте создать что-то вроде следующего после создания WebRequest :

$myHttpWebRequest.AuthenticationLevel = "None"

Надеюсь, это поможет решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...