繁体   English   中英

HttpClient从响应获取图像

[英]HttpClient Get images from response

我正在使用Apache HttpClient执行GET / POST请求,

我想知道您是否可以保存响应加载/检索的图像,而不必再次使用其URL下载它们。

就像一年前一样,已经问过这个问题,但是没有人回答: 我可以使用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下载该特定URL的图像吗? 这可行吗?

网页只是页面的HTML代码。

当浏览器访问网页时,它会下载HTML代码,然后解析HTML 如果存在诸如IMG标签,嵌入式对象(如Flash,Applet等),框架等的内容,则浏览器将获取其URL,并创建一个新的HTTP连接,并在其中下载图像。 每个图像都这样做。 然后,准备好页面的所有各个部分(在缓存中),然后呈现页面。

当然,这是一个简化的描述,因为浏览器倾向于通过保持连接打开并保持高速缓存来优化这些东西。 因此,重申一下,以获取页面中的图像:

  1. 从给定的URL下载HTML。
  2. 解析HTML并找到IMG标签。
  3. 对于每个相关的IMG,都从与其关联的SRC URL下载图像数据。 您应该将它们保存到文件中。

重要的是要理解, HttpClient响应仅代表一个对象-HTML页面或单个图像,具体取决于您为其指定的URL。 如果要下载整个页面及其所有图像,则必须自己为每个对象使用HttpClient它不会自动下载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM