2014-02-11 4 views
0

Я пытаюсь извлечь изображение из ссылки, вот что я делаю:Получение FileNotFoundException даже хотя файл есть в Android

public class FetchImage extends AsyncTask<String, Void, Drawable> { 

public static Drawable LoadImageFromWeb(String url) { 
    try { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "src name"); 
     return d; 
    } catch (IOException e) { 
     Log.e("HATA", "THERE is an error", e); 
     return null; 
    } 
} 

@Override 
protected Drawable doInBackground(String... params) { 
    String url = params[0]; 
    return LoadImageFromWeb(url); 
} 

@Override 
protected void onPostExecute(Drawable drawable) { 

} 

}

Для URL http://www.marketimyilmazlar.com/image/cache/data/INDIRIM/ao/Pril_TR_MAX_750ml_Lemon_189227_print_1772H_1772W-500x500.png я успешно получить изображение , Однако, когда я пытаюсь найти URL-адрес http://www.marketimyilmazlar.com/image/cache/data/cay /Ncapkırmızı-500x500.jpg, он дает мне ошибку filenotfoundexception. Вот тактика:

02-11 18:22:15.475: E/HATA(16015): THERE is an error 
02-11 18:22:15.475: E/HATA(16015): java.io.FileNotFoundException:  http://www.marketimyilmazlar.com/image/cache/data/cay/Ncapkırmızı-500x500.jpg 
02-11 18:22:15.475: E/HATA(16015): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186) 
02-11 18:22:15.475: E/HATA(16015): at java.net.URLConnection$DefaultContentHandler.getContent(URLConnection.java:1018) 
02-11 18:22:15.475: E/HATA(16015): at java.net.URLConnection.getContent(URLConnection.java:199) 
02-11 18:22:15.475: E/HATA(16015): at java.net.URL.getContent(URL.java:447) 
02-11 18:22:15.475: E/HATA(16015): at com.example.barcodescanner.FetchImage.LoadImageFromWeb(FetchImage.java:18) 
02-11 18:22:15.475: E/HATA(16015): at com.example.barcodescanner.FetchImage.doInBackground(FetchImage.java:30) 
02-11 18:22:15.475: E/HATA(16015): at com.example.barcodescanner.FetchImage.doInBackground(FetchImage.java:1) 
02-11 18:22:15.475: E/HATA(16015): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
02-11 18:22:15.475: E/HATA(16015): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
02-11 18:22:15.475: E/HATA(16015): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
02-11 18:22:15.475: E/HATA(16015): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
02-11 18:22:15.475: E/HATA(16015): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
02-11 18:22:15.475: E/HATA(16015): at java.lang.Thread.run(Thread.java:841) 

Это действительно странно. Может ли это быть из-за некоторых турецких символов в ссылке, например «ı», а не «я»? Если это так, как я могу это исправить?

Благодаря

EDIT: Я просто понял, другое дело, когда я открыть ссылку followink в браузере,

http://www.marketimyilmazlar.com/image/cache/data/DUZELTME/dvm/screenshot 7-500x500.jpg

Я вижу, что изменения и ссылка становится:

http://www.marketimyilmazlar.com/image/cache/data/DUZELTME/dvm/screenshot%207-500x500.jpg

Итак, ш Это происходит, и почему я не могу использовать первую ссылку при попытке получить изображение?

+0

Интернет-разрешение в манифесте? – Selvin

+0

@Selvin да, также я могу на самом деле получить некоторые изображения из других ссылок, но некоторые ссылки не работают, weird – yrazlik

+1

Вы должны закодировать свои ссылки с кодировкой url, не уверен, как это делается для Android. Ваша ссылка для nescafe должна быть http://www.marketimyilmazlar.com/image/cache/data/cay/Ncapk%C4%B1rm%C4%B1z%C4%B1-500x500.jpg например Редактировать: последняя часть является " Ncapk% C4% B1rm% C4% B1z% C4% B1-500x500.jpg ", stackoverflow посещает длинные ссылки – taytay

ответ

2

Вы правы в отношении турецкого персонажа «ı»: если вы посмотрите на свой ответ, вы увидите, что Stackoverflow автоматически не распознает URL-адрес, который дает вам проблемы.

С Firefox я могу получить доступ к вашему URL-адресу, но когда я проверяю URL-адрес с помощью инструментов для разработчиков, URL-адрес http://www.marketimyilmazlar.com/image/cache/data/cay/Ncapk%C4%B1rm%C4%B1z%C4%B1-500x500.jpg Обратите внимание, что символы без ASCII экранированы.

Edit 1:

Для получения доступа к URL с магнонами ASCII символами, вам нужно закодировать часть URL со специальными символами, прежде чем сделать запрос: URL encoding in Android

+0

спасибо, так нет ли способа получить изображение с этого URL-адреса? – yrazlik

+0

В андроиде есть подпрограммы для преобразования вашего URL. См. Ссылку в моем ответе ниже. – Nantoka

Смежные вопросы