Java 我可以使用HttpClient获取缓存图像吗?

Java 我可以使用HttpClient获取缓存图像吗?,java,apache-commons-httpclient,Java,Apache Commons Httpclient,是否可以使用HttpClient加载登录页面一次,并从缓存(而不是从src-link)获取img元素的图像文件,而无需重新加载?这很重要,因为我需要为刚刚加载的页面保存验证码,如果我尝试从src链接加载它,它将是另一个验证码。我试过: DefaultHttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet("http://www.mysite/login.jsp");

是否可以使用HttpClient加载登录页面一次,并从缓存(而不是从src-link)获取img元素的图像文件,而无需重新加载?这很重要,因为我需要为刚刚加载的页面保存验证码,如果我尝试从src链接加载它,它将是另一个验证码。我试过:

    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpGet httpget = new HttpGet("http://www.mysite/login.jsp");

    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();

    InputStream instream = entity.getContent();
    OutputStream outstream = new FileOutputStream("d://file.html");
    org.apache.commons.io.IOUtils.copy(instream, outstream);
    outstream.close();
    instream.close();
但是没有任何图像。我还尝试了selenium库中的
HtmlUnitDriver
,也没有任何图像。也许我该试试别的?你能帮我吗

感谢并为我的英语感到抱歉。

正如这里提到的:
DefaultHttpClient
/
HttpClient
get只有一个内容,在您的情况下,它是一个HTML页面(从:)提供)。然后,您需要解析该HTML页面并使用它的src获取指定的img标记,而只需下载它(仅此而已,无需重新发送login.jsp请求!)。如果您下载验证码图像,您需要尽快获取该图像,否则可能会被试图登录的其他用户覆盖

和浏览器一样,您也需要以同样的方式下载HTML,然后解析它,然后请求所有的src/link/ect,这取决于您需要什么

默认情况下,
DefaultHttpClient
不会缓存

CachingHttpClient
缓存在默认情况下处于启用状态,在这种情况下,您需要分析是否已修改,以及是否没有匹配的头,以确定是否执行了对远程服务器的请求,或者其结果是否从缓存返回。如果服务器上没有任何更改,您将获得缓存的数据(如果您以前缓存过)