Я написал программу под AsyncTask, чтобы загрузить изображение из Интернета и показать в ImageView. Программа отлично работает, если я даю ссылку на прямой образ, но не работаю с ссылками API.Загрузка изображения в ImageView из OpenLibrary API
То, что я имею в виду, например, to have the cover of Farmer Boy from OpenLibrary, мне нужно дать ниже источника в HTML или в браузере: http://covers.openlibrary.org/b/isbn/9780385533225-S.jpg
Однако, если я вхожу выше ссылку в браузере, браузер перенаправляет ниже адресу. http://ia700804.us.archive.org/zipview.php?zip=/12/items/olcovers4/olcovers4-M.zip&file=49855-M.jpg
Моя проблема заключается в том, что мой код работает с последним, но не с первым.
Как я могу получить изображение (в приложении для Android), используя первую ссылку?
КОД:
private class getImageOpenLibrary extends AsyncTask<String, Void, Bitmap>
{
protected Bitmap doInBackground(String... args) {
URL newurl = null;
try {
//newurl = new URL("http://covers.openlibrary.org/b/isbn/"+args[0]+"-M.jpg"); // THIS DOES NOT WORK, args[0] = 9780064400039
newurl = new URL("http://ia700804.us.archive.org/zipview.php?zip=/12/items/olcovers4/olcovers4-M.zip&file=49855-M.jpg"); //THIS WORKS
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Bitmap mIcon_val = null;
try {
mIcon_val = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mIcon_val;
}
//@Override
protected void onPostExecute(Bitmap result1)
{
ImageView mImageView = (ImageView) findViewById(R.id.cover);
mImageView.setImageBitmap(result1);
}
}
Вы могли бы хотеть рассмотреть библиотеку как ИЮОЖ (https://github.com/nostra13/Android-Universal-Image-Loader) или Пикассо (https://github.com/square/picasso) для таких интенсивных образ загрузки. – Hein