Я пытаюсь получить значок URL-адреса, который вводит пользователь, например
_url = "google.com";
Я использую HttpUrlConnection, чтобы получить растровое изображение значка из расширения /favicon.ico
с URL-адреса хоста.
String faviconString = Uri.parse(_url).getHost() + "/favicon.ico";
URL faviconUrl = null;
Bitmap favicon = null;
try
{
faviconString = "http://" + faviconString;
faviconUrl = new URL(faviconString);
HttpURLConnection connection = (HttpURLConnection) faviconUrl.openConnection();
connection.setDoInput(true);
connection.connect();
favicon = BitmapFactory.decodeStream(connection.getInputStream());
}
catch (IOException e)
{
e.printStackTrace();
}
return favicon;
Однако, поскольку пользователь, вероятно, не укажет http://
или https://
, мне придется добавить его самому. У меня проблема в том, что если я добавлю http://
перед URL-адресом, все будет работать нормально, но для https://
некоторые сайты вернут значок, другие просто дадут мне ноль. Как узнать, на какой странице используется https
? Должен ли я просто добавлять http://
для каждого случая? Существуют ли какие-либо веб-сайты, которые строго ограничивают https
и возвращают значение null при использовании http
?
<link rel="shortcut icon" href="/a/different/path.ico" type="image/x-icon" />
- person Emiel   schedule 20.09.2013WebIconDatabase
иWebView.getFavicon()
были бы идеальными, ноWebIconDatabase
устарела - person Jason Hu   schedule 20.09.2013http
вернет null, зачем мне вообще возиться сhttps
, зачем мне вообще задавать этот вопрос. - person Jason Hu   schedule 24.09.2013Should I just add http:// for every case?
вот почему я сказал то, что сказал. В любом случае, жестко закодировать этотUri.parse(_url).getHost() + "/favicon.ico"
очень нереально. Однако, если вы настаиваете на получении только этого пути, вы можете сделать запрос HEAD, чтобы узнать подробности о ресурсе, даже не получая данные. проверьте это здесь: w3.org/Protocols/rfc2616/rfc2616- sec9.html#sec9.4 - person Sherif elKhatib   schedule 24.09.2013null
, каков код состояния HTTP? Вы проверили, является ли это ошибкой 404, перенаправлением или чем-то еще? Если это перенаправление, следует ли за ними API, который вы используете? - person nloko   schedule 30.09.2013