Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. редактирование : Этот ответ работает, но в наше время необходимо просто использовать запросы библиотека, как упомянуто другими ответами ниже.
<час>Использование httplib.
>>> import httplib
>>> conn = httplib.HTTPConnection("www.google.com")
>>> conn.request("HEAD", "/index.html")
>>> res = conn.getresponse()
>>> print res.status, res.reason
200 OK
>>> print res.getheaders()
[('content-length', '0'), ('expires', '-1'), ('server', 'gws'), ('cache-control', 'private, max-age=0'), ('date', 'Sat, 20 Sep 2008 06:43:36 GMT'), ('content-type', 'text/html; charset=ISO-8859-1')]
существует также getheader(name)
для получения определенного заголовка.
Вероятно, легче: используйте urllib или urllib2.
>>> import urllib
>>> f = urllib.urlopen('http://google.com')
>>> f.info().gettype()
'text/html'
f.info () является подобным словарю объектом, таким образом, можно сделать f.info () ['тип контента'], и т.д.
http://docs.python.org/library/urllib.html
http://docs.python.org/library/urllib2.html
http://docs.python.org/library/httplib.html
, документы отмечают, что httplib обычно не используется непосредственно.
Кроме того, при использовании httplib (по крайней мере, в 2.5.2) попытка прочитать ответ на запрос HEAD заблокирует (в режиме чтения) и впоследствии завершится неудачей. Если вы не выполнили чтение в ответе, вы не можете отправить еще один запрос на соединение, вам нужно будет открыть новый. Или примите большую задержку между запросами.
Для меня это было так:
«Все события могут быть живыми событиями»
«Мы очень гордимся тем, что считают некоторые Добавленные события среди тех поддерживается живым (). 1.4 вводит Поддержка перекрестных браузеров для изменений, Отправить, focusin, focusout, mouseender, и MouseLeave через мероприятие Делегация в .Live (). "
Я ждал этого на событии изменения в возрасте!
-121--1002654-Urllib2 может использоваться для выполнения запроса головы. Это немного приятнее, чем использовать httplib, поскольку urllib2 анализирует URL-адрес для вас вместо того, чтобы вы требовать разделить URL в имя хоста и путь.
>>> import urllib2
>>> class HeadRequest(urllib2.Request):
... def get_method(self):
... return "HEAD"
...
>>> response = urllib2.urlopen(HeadRequest("http://google.com/index.html"))
Заголовки доступны через ответ .info () как раньше. Интересно, что вы можете найти URL-адрес, который вы были перенаправлены на:
>>> print response.geturl()
http://www.google.com.au/index.html
Я обнаружил, что httplib немного быстрее urllib2. Я рассчитал время для двух программ - одна с использованием httplib, а другая с использованием urllib2 - отправка запросов HEAD на 10 000 URL-адресов. Httplib был быстрее на несколько минут. Общая статистика httplib : реальная 6m21.334s user 0m2.124s sys 0m16.372s
и общая статистика urllib2 были: real 9m1.380s user 0m16.666s sys 0m28.565s
Кто-нибудь еще внес свой вклад в это?