=
=
=
from:https://blog.csdn.net/qq_41070393/article/details/106855795
/** * 下载图片 */ public static void downloadPicture(String url, String localPath) { //可关闭的httpclient客户端,相当于你打开一个浏览器 CloseableHttpClient closeableHttpClient = HttpClients.createDefault(); //构造httpget请求对象 HttpGet httpGet = new HttpGet(url); //响应 CloseableHttpResponse response = null; FileOutputStream fos = null; try { response = closeableHttpClient.execute(httpGet); //获取响应结果 HttpEntity不仅可以作为结果,也可以作为请求的参数实体,有很多实现 HttpEntity entity = response.getEntity(); // image/jpg image/jpeg image/png String contentType = entity.getContentType().getValue();//特别注意这里要getValue一下,否则这里不是string类型的数据而是reader类型的 String suffix = ".jpeg"; if (contentType.contains("jpeg") || contentType.contains("jpg")) { suffix = ".jpg"; } else if (contentType.contains("bmp") || contentType.contains("bitmap")) { suffix = ".bmp"; } else if (contentType.contains("png")) { suffix = ".png"; } else if (contentType.contains("gif")) { suffix = ".gif"; } else { OutTool.out("根据response头信息的contentType,图片的后缀没有找到合适的。默认使用jpeg。", url); } //字节流 byte[] bytes = EntityUtils.toByteArray(entity); //String localpath = "D:\\LDS\\MavenDemoProject\\src\\main\\resources\\" + "我用httpclient的Get方式下载的图片" + suffix; String fileName = localPath + suffix; fos = new FileOutputStream(fileName); fos.write(bytes); //确保流关闭 EntityUtils.consume(entity); } catch (Exception e) { e.printStackTrace(); } finally { //关闭输出流 if(fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (closeableHttpClient != null) { try { closeableHttpClient.close(); } catch (IOException e) { e.printStackTrace(); } } if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } }
使用Httpclient下载图片
/** * 下载图片 */ public static void downloadPicture(String url, String localPath) { //可关闭的httpclient客户端,相当于你打开一个浏览器 CloseableHttpClient closeableHttpClient = HttpClients.createDefault(); //构造httpget请求对象 HttpGet httpGet = new HttpGet(url); //响应 CloseableHttpResponse response = null; FileOutputStream fos = null; try { response = closeableHttpClient.execute(httpGet); //获取响应结果 HttpEntity不仅可以作为结果,也可以作为请求的参数实体,有很多实现 HttpEntity entity = response.getEntity(); // image/jpg image/jpeg image/png String contentType = entity.getContentType().getValue();//特别注意这里要getValue一下,否则这里不是string类型的数据而是reader类型的 String suffix = ".jpeg"; if (contentType.contains("jpeg") || contentType.contains("jpg")) { suffix = ".jpg"; } else if (contentType.contains("bmp") || contentType.contains("bitmap")) { suffix = ".bmp"; } else if (contentType.contains("png")) { suffix = ".png"; } else if (contentType.contains("gif")) { suffix = ".gif"; } else { OutTool.out("根据response头信息的contentType,图片的后缀没有找到合适的。默认使用jpeg。", url); } //字节流 byte[] bytes = EntityUtils.toByteArray(entity); //String localpath = "D:\\LDS\\MavenDemoProject\\src\\main\\resources\\" + "我用httpclient的Get方式下载的图片" + suffix; String fileName = localPath + suffix; fos = new FileOutputStream(fileName); fos.write(bytes); //确保流关闭 EntityUtils.consume(entity); } catch (Exception e) { e.printStackTrace(); } finally { //关闭输出流 if(fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (closeableHttpClient != null) { try { closeableHttpClient.close(); } catch (IOException e) { e.printStackTrace(); } } if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } }
====文章1====
转载:https://www.iteye.com/blog/mybloglearn-818301
利用HttpClient下载图片
关键字: http
最近在项目中用到了HttpClient类库,有一个需求是下载网站中的图片,但是发现下载的图片不能打开,在网上搜索类似问题,没有找到解决的办法,无奈只得查看HttpClient的源代码,自己解决这个问题了。
在HttpMethodBase中发现如下代码:
java 代码
public String getResponseBodyAsString() throws IOException {
byte[] rawdata = null;
if (responseAvailable()) {
rawdata = getResponseBody();
}
if (rawdata != null) {
return EncodingUtil.getString(rawdata, getResponseCharSet());
} else {
return null;
}
}
其中在返回网络资源的内容时,使用了指定的编码对网页内容或图片内容进行了编码,这样,对于图片来说内容当然不能显示了,所以在获得图片内容时要使用如下的方法:
java 代码
public byte[] getResponseBody() throws IOException
或
public InputStream getResponseBodyAsStream() throws IOException
在把返回的内容存储到文件中,这样就实现了图片的自动下载,下面的代码演示了下载图片的过程
java 代码
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
/**
* 用HttpClient下载图片
* @author wei
*/
public class TestDownImage {
public static void main(String[] args) throws IOException{
HttpClient client = new HttpClient();
GetMethod get = new GetMethod("http://images.sohu.com/uiue/sohu_logo/beijing2008/2008sohu.gif");
client.executeMethod(get);
File storeFile = new File("c:/2008sohu.gif");
FileOutputStream output = new FileOutputStream(storeFile);
//得到网络资源的字节数组,并写入文件
output.write(get.getResponseBody());
output.close();
}
}
=
=
=
相关推荐
在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到本地。以下是对这个主题的详细阐述: 1. **HttpClient介绍**: HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级...
接下来,`HttpClientUtil.java`文件可能是实现HttpClient工具类,提供一个静态方法来创建和初始化HttpClient实例。这个方法可能包含以下步骤: 1. 创建一个CloseableHttpClient实例,通常使用HttpClientBuilder构建...
在Java开发中,HTTPClient和RESTful风格的接口被广泛用于实现文件的上传与下载功能。HTTPClient是一个强大的HTTP客户端库,而RESTful是一种轻量级的、基于HTTP协议的软件架构风格,常用于构建Web服务。在分布式系统...
"JAVA利用HttpClient进行POST请求(HTTPS)" JAVA HttpClient是Apache软件基金会提供的一个开源实现HTTP客户端的Java库,能够帮助开发者轻松地与HTTP服务器进行交互。在实际项目中,我们经常需要使用HttpClient来发送...
总之,利用HTTPClient进行多线程分段下载是一种高效的方法,它结合了HTTP协议的特性与Java的多线程处理能力。通过合理的设计和实现,可以显著提升大文件下载的速度和用户体验。在实际编码中,开发者需要关注线程安全...
下面是如何使用HttpClient下载图片: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import ...
本主题将深入探讨如何利用HttpClient实现文件的下载功能,同时也会涉及相关的源码解析和辅助工具的使用。 首先,HttpClient是一个Java库,它允许开发者以一种与HTTP协议兼容的方式发送请求并接收响应。它提供了丰富...
3. **HttpClient调用**:在Java端,引入HttpClient库及相关依赖(如本例中的`httpclient-4.2.3.jar`等)。使用HttpClient,你可以创建一个`HttpClient`实例,然后构建`HttpGet`或`HttpPost`对象,设置请求URL(对应...
通过理解并熟练运用以上知识点,你将能够利用HttpClient库有效地进行HTTP通信,无论是简单的GET请求还是复杂的POST请求,甚至是处理HTTPS和管理会话。HttpClient的强大功能使其成为Java开发者在处理HTTP任务时的首选...
《Apache Commons HttpClient 3.1 Java API详解》 Apache Commons HttpClient 3.1 是一个功能强大的Java HTTP客户端库,它提供了全面的HTTP协议支持,包括基本的GET和POST请求、Cookie管理、重定向处理以及HTTPS...
利用httpclient-4.3.1.jar、httpcore-4.3.jar包,很简单的用java实现httpget和httppost请求。
在电商开发中,利用Java HttpClient可以高效地与其他系统交互,无论是获取商品信息、处理订单,还是进行数据分析,都能提供可靠的网络通信支持。合理使用和配置HttpClient,能够提升系统的稳定性和性能。
在实际开发中,我们常常利用HttpClient与其他服务进行交互,如API调用、数据同步等。 总之,Java中的HttpClient是一个强大且灵活的HTTP客户端工具,它使得网络通信变得更加简单。通过阅读源码和编写测试用例,我们...
《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...
在本文中,我们将深入探讨HttpClient的主要特性和使用方法,以及如何利用它来处理HTTP协议的各种操作。 HttpClient支持多种HTTP方法,如GET、POST、PUT、DELETE等,可以方便地进行HTTP头的设置,发送cookies,处理...
Java HttpClient 是一个强大的 HTTP 客户端库,用于在 Java 应用程序中发送和接收 HTTP 请求。这个工具包在Java社区中广泛使用,尤其是在需要与Web服务进行交互或者进行自动化测试时。在这个场景中,我们关注的是两...
HttpClient是Apache基金会开发的一个Java库,它为Java程序员提供了一个强大的、灵活的、稳定的、功能丰富的客户端HTTP通信框架。...同时,及时关注Apache HttpClient的更新,以便利用新特性并修复已知问题。
### HttpClient学习精髓 #### 一、简介 ... #### 二、背景与需求 ...对于Java开发者来说,无论是进行Web开发还是构建各种类型的网络服务,都...通过合理利用HttpClient,可以极大地提高网络应用的开发效率和性能表现。
2. **连接管理**:HttpClient包含一个连接管理器,用于控制到服务器的连接,包括连接池的创建、管理和复用,有助于提高性能和资源利用率。 3. **请求和响应处理**:HttpClient可以设置请求头、参数、编码方式等,并...