c# - headers - Cómo obtener el tamaño del archivo de encabezados http
httpwebrequest headers c# (3)
¿Se puede hacer esto con los encabezados HTTP?
Sí, este es el camino a seguir. Si se proporciona la información, está en el encabezado como Content-Length
. Tenga en cuenta, sin embargo, que este no es necesariamente el caso.
Solo se puede descargar la cabecera usando una solicitud HEAD
lugar de GET
. Quizás el siguiente código ayude:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://example.com/");
req.Method = "HEAD";
long len;
using(HttpWebResponse resp = (HttpWebResponse)(req.GetResponse()))
{
len = resp.ContentLength;
}
Observe la propiedad para la longitud del contenido en el objeto HttpWebResponse
; no es necesario analizar manualmente el encabezado Content-Length
.
Quiero obtener el tamaño de un archivo http: /.../ antes de descargarlo. El archivo puede ser una página web, una imagen o un archivo multimedia. ¿Se puede hacer esto con los encabezados HTTP? ¿Cómo descargo solo el encabezado HTTP del archivo?
Sí, suponiendo que el servidor HTTP con el que está hablando lo admite / permite esto:
System.Net.WebRequest req = System.Net.HttpWebRequest.Create("http://.com/robots.txt");
req.Method = "HEAD";
using (System.Net.WebResponse resp = req.GetResponse())
{
int ContentLength;
if(int.TryParse(resp.Headers.Get("Content-Length"), out ContentLength))
{
//Do something useful with ContentLength here
}
}
Si no se permite el uso del método HEAD, o el encabezado Content-Length no está presente en la respuesta del servidor, la única forma de determinar el tamaño del contenido en el servidor es descargarlo. Como esto no es particularmente confiable, la mayoría de los servidores incluirán esta información.
WebClient webClient = new WebClient();
webClient.OpenRead("http://.com/robots.txt");
long totalSizeBytes= Convert.ToInt64(webClient.ResponseHeaders["Content-Length"]);
Console.WriteLine((totalSizeBytes));