2013-02-01 26 views
5

tôi cố gắng để tải về các hình ảnh trong url sau:URL Tải hình ảnh chứa "è"

http://upload.tapcrowd.com//cache/ /_cp_100_100_stand_filière_300x212.jpg

Như bạn có thể thấy trong các trình duyệt này cho thấy một hình ảnh, nhưng trong ứng dụng của tôi Tôi nhận được một FileNotFoundException.

Tuy nhiên, nếu tôi thay đổi url của hình ảnh từ "è" thành "e". Tôi có thể tải nó thành ứng dụng của mình. Tuy nhiên điều này chỉ là một giải pháp tạm thời vì nó cần để có thể tải hình ảnh với dấu unicode.

Tôi làm cách nào để đạt được điều này?

Phương pháp sử dụng để tải về hình ảnh:

 Bitmap bitmap = null; 
     URL imageUrl = new URL(url); 
     HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); 
     conn.setConnectTimeout(30000); 
     conn.setReadTimeout(30000); 
     conn.setInstanceFollowRedirects(true); 
     InputStream is = conn.getInputStream(); 
     OutputStream os = new FileOutputStream(f); 
     Utils.CopyStream(is, os); 
     os.close(); 
     bitmap = decodeFile(f, maxheight, maxwidth); 

mã kết quả làm việc cho tôi:

 Bitmap bitmap = null; 
     int slashIndex = url.lastIndexOf('/'); 
     String filename = url.substring(slashIndex + 1); 
     filename = URLEncoder.encode(filename, "UTF-8"); 
     url = url.subSequence(0, slashIndex + 1) + filename; 
     URL imageUrl = new URL(url); 
     HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); 
     conn.setConnectTimeout(30000); 
     conn.setReadTimeout(30000); 
     conn.setInstanceFollowRedirects(true); 
     InputStream is = conn.getInputStream(); 
     OutputStream os = new FileOutputStream(f); 
     Utils.CopyStream(is, os); 
     os.close(); 
     bitmap = decodeFile(f, maxheight, maxwidth); 
+0

có thể là sự cố mã hóa. bạn cần phải urlencode đường dẫn của bạn (một phần sau khi .com) – njzk2

+0

Tôi đã thử URLEncoder.encode (url); nhưng không có thành công – ePeace

+0

bạn đã chỉ định mã hóa hoặc bạn đã sử dụng mã hóa không dùng nữa chỉ với một arg? – ben75

Trả lời

3

Mã hóa url sử dụng URLEncoder:

String baseUrl = "http://upload.tapcrowd.com//cache//"; 
String imageName = "_cp_100_100_stand_filière_300x212.jpg"; 
URL imageUrl = new URL(baseUrl+URLEncoder.encode(imageName ,"UTF-8")); 

Nó hoạt động với trình duyệt của bạn, bởi vì trình duyệt đủ thông minh để thực hiện việc mã hóa khi bạn nhập dấu trọng âm vào thanh url của mình.

+0

điều này không hoạt động – ePeace

+2

bạn cần phải urlencode các bộ phận, không phải toàn bộ điều. – njzk2

+0

cố định nó cho tôi, nhưng njzk2 nhận được câu trả lời đó trước tiên tôi sẽ ký câu trả lời đúng; cảm ơn – ePeace

Các vấn đề liên quan