2013-02-01 52 views
5

我嘗試下載圖像中的以下網址:下載圖像URL中包含「E」

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

正如你可以在瀏覽器這說明圖像看到,但在我的應用程序我得到一個FileNotFoundException。

但是,如果我將圖像的URL從「è」更改爲「e」。我可以成功將其下載到我的應用程序中。然而,這只是一個臨時解決方案,因爲它需要能夠使用unicode登錄下載圖像。

我該如何做到這一點?

方法用來下載圖片:

 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); 

結果代碼爲我的作品:

 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

可能是一個編碼問題。你需要urlencode你的路徑(部分後.com) – njzk2

+0

我試過URLEncoder.encode(url);但沒有成功 – ePeace

+0

您是否指定了編碼,或者您是否只使用了一個arg而使用了棄用的編碼? – ben75

回答

3

編碼使用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")); 

它與你的瀏覽器,因爲瀏覽器足夠智能,可以在網址欄中輸入重音時進行編碼。

+0

這不起作用 – ePeace

+2

你需要urlencode部分,而不是整個事情。 – njzk2

+0

爲我解決了這個問題,但是njzk2先得到了答案,我會正確地回答他的答案;謝謝 – ePeace