首先,如果有人问过这个问题,我想道歉,我一直在谷歌搜索,但没有找到任何解决方案。
网址一: http: //graph.facebook.com/1787989776/picture
网址 B:http ://profile.ak.fbcdn.net/hprofile-ak-ash3/49968_1787989776_350012849_q.jpg
简而言之:我想使用文件名作为访问URL A后重定向的 URL 来缓存我的照片,而不是URL A。
详细说明:
我们总是缓存下载的图像。就我而言,我想缓存 facebook 个人资料的照片。例如:从URL A下载的图像。
通过单击链接,您可以看到,我们被重定向到URL B。
使用URL A缓存我的照片并不安全,因为图像可能在我下次调用它时已更改(用户更改了他的个人资料照片,但 Facebook api 通过维护图形 URL 来简化我们的工作),而我的图像加载器不会获取任何新图像,因为条件“图像在缓存中找到”给了我真实的,肯定的。
所以,如果我能得到URL B并用它来缓存我的照片,那就太好了。
我相信描述就足够了,但如果你想知道我在这里做了什么,那就是:
URL url = new URL(imgUrl); // imgUrl = URL A
URLConnection connection = url.openConnection();
connection.connect();
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(downloadedFile); // downloadedFile = File named with encoded URL A
byte data[] = new byte[10240]; // 10kb
int count;
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();