2010-08-11 26 views
5

Tengo un archivo en un URI que me gustaría leer usando StreamReader. Obviamente, esto causa un problema ya que File.OpenText no admite rutas URI. El archivo es un archivo txt con un montón de html. Tengo varias páginas web que usan este mismo fragmento de html, así que lo puse en un archivo txt, y lo estoy leyendo en la página cuando se carga la página (puedo hacer que funcione cuando coloque el archivo en el sistema de archivos) , pero debe colocarlo en un repositorio de documentos en línea para que un usuario de negocios pueda acceder a él). Estoy tratando de evitar el uso de un iframe. ¿Hay alguna forma de usar StreamReader con formatos URI? Si no, ¿qué otras opciones hay usando C# para leer en el archivo txt de html? Si esto no es óptimo, ¿alguien puede sugerir un mejor enfoque?¿Cómo leer un archivo desde un URI usando StreamReader?

Respuesta

10

Si estás detrás de un proxy no se olvide de establecer sus credenciales:

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

¿Existe un requisito específico para usar StreamReader? A menos que exista, puede utilizar la clase WebClient:

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

Usted podría tratar de usar la HttpWebRequestClass, o WebClient. Aquí está el ejemplo de solicitud web ligeramente complicado. Es ventaja sobre WebClient se le da más control sobre cómo se realiza la solicitud:

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(); 
Cuestiones relacionadas