2008-10-16 4 views
9

J'essaie de récupérer un flux XML à partir d'une URL. Pour la plupart des URL, mon code ci-dessous fonctionne correctement. Mais, j'ai quelques URLs ce délai. Les URL en question font fonctionnent à partir d'Internet Explorer.Powershell - Augmenter le délai d'attente pour récupérer du code XML à partir d'une URL

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

Donc, je suis allé chercher un moyen d'augmenter le délai d'expiration. D'après ce que j'ai lu, je crois que je ne peux pas le faire en utilisant System.Net.WebClient. Je pense que je dois utiliser System.Net.WebRequest à la place, mais je ne peux pas le faire fonctionner. Le code que je travaille sur est ci-dessous:

$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() 

Les URL que je tente d'accéder sont internes à mon entreprise, donc je ne peux pas les poster. Mais, ils fonctionnent dans IE et l'URL réelle devrait être sans importance.

Des idées?

EDIT: Les tests préliminaires montrent que l'ajout de $myHttpWebRequest.AuthenticationLevel = "None" fonctionne. Merci Scott Saad.

Répondre

6

Par défaut, le WebRequest.AuthenticationLevel est réglé sur MutualAuthRequested, donc il attendra un certain type de réponse d'authentification. Par conséquent, un dépassement de délai est probablement dépassé en attendant l'authentification. Il ne semblait pas que vous jouiez avec les informations d'identification, à moins que vous n'ayez besoin d'une authentification, vous n'en aurez probablement pas besoin. Essayez quelque chose comme ce qui suit après avoir créé votre WebRequest:

$myHttpWebRequest.AuthenticationLevel = "None" 

J'espère que cela aide à résoudre le problème.

Questions connexes