我使用Apache HttpClient执行GET / POST请求,
我想知道你是否可以保存响应加载/检索的图像,而不必再用它们的URL下载它们。
这个问题就像一年前一样被问过,但没有人回答: Can I get cached images using HttpClient?
我试过了:
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
FileOutputStream fos = new FileOutputStream(new File("img.png"));
int inByte;
while ((inByte = is.read()) != -1) {
fos.write(inByte);
}
is.close();
fos.close();
但显然它只下载了文字,我可以HttpClient
下载该特定网址的图片吗?
这是否可行?
答案 0 :(得分:0)
网页只是网页的HTML代码。
当浏览器访问网页时,它会下载HTML代码,然后解析HTML 。如果有IMG
标签,嵌入对象(如Flash,Applet等),框架等,浏览器会获取其URL,并创建一个新的HTTP连接,在该连接中下载图像。它适用于每个图像。然后,让页面的所有各个部分都准备就绪(在缓存中),它呈现页面。
这是一个简化的描述,当然,因为浏览器倾向于通过保持连接打开并保持缓存来优化这些事情。重申一下,要在页面中获取图像:
重要的是要了解HttpClient
响应只代表一个对象 - HTML页面或单个图像,具体取决于您提供的URL。如果您要下载整个页面及其所有图像,则必须自己为每个对象使用HttpClient
- 它不会自动执行此操作。