Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Да, принятие сервера HTTP, с которым Вы говорите, поддерживает/позволяет это:
public long GetFileSize(string url)
{
long result = -1;
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
req.Method = "HEAD";
using (System.Net.WebResponse resp = req.GetResponse())
{
if (long.TryParse(resp.Headers.Get("Content-Length"), out long ContentLength))
{
result = ContentLength;
}
}
return result;
}
При использовании ГЛАВНОГО метода не позволяется, или заголовок Довольной Длины не присутствует в ответе сервера, единственный способ решить, что размер содержания на сервере должен загрузить его. Так как это не особенно надежно, большинство серверов будет включать эту информацию.
это может быть сделано с HTTP-заголовками?
Да, это - способ пойти. , Если информация предоставляется, это находится в заголовке как Content-Length
. Обратите внимание, однако, что это не обязательно имеет место.
Загрузка только заголовок может быть сделан с помощью HEAD
запрос вместо GET
. Возможно, следующий код помогает:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://example.com/");
req.Method = "HEAD";
long len;
using(HttpWebResponse resp = (HttpWebResponse)(req.GetResponse()))
{
len = resp.ContentLength;
}
Уведомление свойство для длины содержания на HttpWebResponse
объект †“В никакая потребность проанализировать Content-Length
заголовок вручную.