2008-10-16 11 views
9

Sto provando a recuperare un flusso XML da un URL. Per la maggior parte degli URL il mio codice qui sotto funziona correttamente. Ma ho un paio di URL che scadono. Gli URL in questione do funzionano da Internet Explorer.Powershell - Aumentare il timeout per il recupero di XML da un URL

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

Così, sono andato alla ricerca di un modo per aumentare il periodo di timeout. Da quello che ho letto, credo di non poterlo fare usando System.Net.WebClient. Penso di aver bisogno di usare System.Net.WebRequest invece, ma non riesco a farlo funzionare. Il codice che ho lavorato su è qui sotto:

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

Gli URL che sto cercando di accesso sono interne alla mia azienda, quindi non posso postare. Ma, funzionano in IE e l'URL effettivo dovrebbe essere irrilevante.

Idee?

MODIFICA: I test preliminari mostrano che l'aggiunta di $myHttpWebRequest.AuthenticationLevel = "None" funziona. Grazie a Scott Saad.

risposta

6

Di default il WebRequest.AuthenticationLevel è impostato su MutualAuthRequested, quindi attenderà per un certo tipo di risposta di autenticazione. Pertanto, un timeout viene probabilmente superato durante l'attesa dell'autenticazione. Non sembra che tu stia scherzando con le credenziali quindi, a meno che non richiedi l'autenticazione, probabilmente non ti servirà. Provare qualcosa di simile al seguente dopo aver creato il vostro WebRequest:

$myHttpWebRequest.AuthenticationLevel = "None" 

Spero che questo aiuta a risolvere il problema.