Estoy revisando un código antiguo mío y me he topado con un método para obtener el título de un sitio web en función de su url. No es realmente lo que usted llamaría un método estable, ya que a menudo no produce un resultado y, a veces incluso produce resultados incorrectos. Además, a veces no muestra algunos de los caracteres del título ya que son de una codificación alternativa.Cómo obtener el título del sitio web de C#
¿Alguien tiene sugerencias para mejorar esta versión anterior?
public static string SuggestTitle(string url, int timeout)
{
WebResponse response = null;
string line = string.Empty;
try
{
WebRequest request = WebRequest.Create(url);
request.Timeout = timeout;
response = request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = System.Text.Encoding.GetEncoding("utf-8");
StreamReader streamRead = new System.IO.StreamReader(streamReceive, encoding);
while(streamRead.EndOfStream != true)
{
line = streamRead.ReadLine();
if (line.Contains("<title>"))
{
line = line.Split(new char[] { '<', '>' })[2];
break;
}
}
}
catch (Exception) { }
finally
{
if (response != null)
{
response.Close();
}
}
return line;
}
Una nota final - Me gustaría que el código se ejecute más rápido, así, ya que es el bloqueo hasta que la página ya sido exagerado, por lo que si puedo conseguir sólo el encabezado del sitio y no toda la página, sería Se bueno.
¿Hay alguna manera de establecer un tiempo de espera cuando se usa WebClient? –
Creo que lo único que se debe agregar es que debe agregar @ (para las cosas de escape) al patrón, es decir: @ "\
Para agregar tiempo de espera (y otras cosas) a la clase WebClient, esta guía proporciona una buena solución: http://codegator.com/mcook/archive/2006/07/17/extending-webclient-using- c.aspx –