2010-08-11 34 views
5

Tôi có một tệp tại URI mà tôi muốn đọc bằng cách sử dụng StreamReader. Rõ ràng, điều này gây ra một vấn đề kể từ khi File.OpenText không hỗ trợ đường dẫn URI. Tệp là một tệp txt với một bó html trong đó. Tôi có nhiều trang web sử dụng cùng một đoạn html, vì vậy tôi đã đặt nó vào một tệp txt và đọc nó vào trang khi tải trang (tôi có thể làm cho nó hoạt động khi tôi đặt tệp trên hệ thống tệp , nhưng cần phải đặt nó trong kho lưu trữ tài liệu trực tuyến để người dùng doanh nghiệp có thể truy cập vào nó). Tôi đang cố gắng tránh sử dụng iframe. Có cách nào để sử dụng định dạng StreamReader với URI không? Nếu không, các tùy chọn khác có sử dụng C# để đọc trong tệp txt của html? Nếu điều này không tối ưu, ai đó có thể đề xuất một cách tiếp cận tốt hơn?Cách đọc tệp từ URI bằng StreamReader?

Trả lời

10

Nếu bạn là sau một proxy đừng quên để thiết lập thông tin của bạn:

WebRequest request=WebRequest.Create(url); 
    request.Timeout=30*60*1000; 
    request.UseDefaultCredentials=true; 
    request.Proxy.Credentials=request.Credentials; 
    WebResponse response=(WebResponse)request.GetResponse(); 
    using (Stream s=response.GetResponseStream()) 
    ... 
17

Có yêu cầu cụ thể nào để sử dụng StreamReader không? Trừ khi có, bạn có thể sử dụng lớp WebClient:

var webClient = new WebClient(); 
string readHtml = webClient.DownloadString("your_file_path_url"); 
13

Bạn có thể thử bằng cách sử dụng HttpWebRequestClass, hoặc WebClient. Đây là ví dụ về yêu cầu web hơi phức tạp. Đó là lợi thế hơn WebClient là nó cung cấp cho bạn kiểm soát nhiều hơn cách yêu cầu được đưa ra:

HttpWebRequest httpRequest = (HttpWebRequest) WebRequest.Create(lcUrl); 

httpRequest.Timeout = 10000;  // 10 secs 
httpRequest.UserAgent = "Code Sample Web Client"; 

HttpWebResponse webResponse = (HttpWebResponse) httpRequest.GetResponse(); 
StreamReader responseStream = new StreamReader(webResponse.GetResponseStream()); 

string content = responseStream.ReadToEnd(); 
Các vấn đề liên quan