gpt4 book ai didi

java - HttpClient 从响应中获取图像

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:04 24 4
gpt4 key购买 nike

我正在使用 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 下载该特定 URL 的图像吗?这可行吗?

最佳答案

网页只是页面的 HTML 代码。

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

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

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

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

关于java - HttpClient 从响应中获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com