2008-10-16 20 views
9

Tôi đang cố truy xuất luồng XML từ một URL. Đối với hầu hết các URL, mã của tôi bên dưới hoạt động tốt. Nhưng, tôi có một vài URL hết thời gian chờ. Các URL được đề cập đến làm hoạt động từ Internet Explorer.Powershell - Tăng thời gian chờ để truy xuất XML từ một URL

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

Vì vậy, tôi đã tìm kiếm cách tăng khoảng thời gian chờ. Từ những gì tôi đã đọc, tôi tin rằng tôi không thể làm điều này bằng cách sử dụng System.Net.WebClient. Tôi nghĩ rằng tôi cần phải sử dụng System.Net.WebRequest thay vào đó, nhưng tôi không thể làm cho nó hoạt động. Mã tôi đang làm việc bên dưới:

$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 tôi đang cố gắng truy cập là nội bộ cho công ty của tôi, vì vậy tôi không thể đăng chúng. Tuy nhiên, chúng hoạt động trong IE và URL thực tế sẽ không liên quan.

Ý tưởng?

EDIT: Thử nghiệm sơ bộ cho thấy rằng việc thêm $myHttpWebRequest.AuthenticationLevel = "None" hoạt động. Cảm ơn Scott Saad.

Trả lời

6

Theo mặc định, WebRequest.AuthenticationLevel được thiết lập để MutualAuthRequested, do đó nó sẽ chờ đợi đối với một số loại phản ứng xác thực. Do đó, thời gian chờ có thể bị vượt quá trong khi chờ xác thực xảy ra. Có vẻ như bạn đang làm rối tung thông tin đăng nhập, vì vậy trừ khi bạn yêu cầu xác thực, có thể bạn sẽ không cần điều này. Hãy thử một cái gì đó như sau sau khi bạn tạo bạn WebRequest:

$myHttpWebRequest.AuthenticationLevel = "None" 

Tôi hy vọng điều này sẽ giúp giải quyết vấn đề.

Các vấn đề liên quan