`
weifly
  • 浏览: 238886 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用HttpClient下载图片

阅读更多
最近在项目中用到了HttpClient类库,有一个需求是下载网站中的图片,但是发现下载的图片不能打开,在网上搜索类似问题,没有找到解决的办法,无奈只得查看HttpClient的源代码,自己解决这个问题了。
在HttpMethodBase中发现如下代码:
java 代码
 
  1. public String getResponseBodyAsString() throws IOException {  
  2.         byte[] rawdata = null;  
  3.         if (responseAvailable()) {  
  4.             rawdata = getResponseBody();  
  5.         }  
  6.         if (rawdata != null) {  
  7.             return EncodingUtil.getString(rawdata, getResponseCharSet());  
  8.         } else {  
  9.             return null;  
  10.         }  
  11.     }  
其中在返回网络资源的内容时,使用了指定的编码对网页内容或图片内容进行了编码,这样,对于图片来说内容当然不能显示了,所以在获得图片内容时要使用如下的方法:
java 代码
 
  1. public byte[] getResponseBody() throws IOException   
  2. 或  
  3. public InputStream getResponseBodyAsStream() throws IOException  
在把返回的内容存储到文件中,这样就实现了图片的自动下载,下面的代码演示了下载图片的过程
java 代码
 
  1. import java.io.File;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4.   
  5. import org.apache.commons.httpclient.HttpClient;  
  6. import org.apache.commons.httpclient.methods.GetMethod;  
  7.   
  8. /** 
  9.  * 用HttpClient下载图片 
  10.  * @author wei 
  11.  */  
  12. public class TestDownImage {  
  13.       
  14.     public static void main(String[] args) throws IOException{  
  15.         HttpClient client = new HttpClient();  
  16.         GetMethod get = new GetMethod("http://images.sohu.com/uiue/sohu_logo/beijing2008/2008sohu.gif");  
  17.         client.executeMethod(get);  
  18.         File storeFile = new File("c:/2008sohu.gif");  
  19.         FileOutputStream output = new FileOutputStream(storeFile);  
  20.         //得到网络资源的字节数组,并写入文件  
  21.         output.write(get.getResponseBody());  
  22.         output.close();  
  23.     }  
  24. }  
HttpClient是Apache组织的一个项目,作为Http客户端类库,功能十分强大,正在关注这个项目中,欢迎大家和我交流使用HttpClient类库的经验!
分享到:
评论
4 楼 java_mid4 2007-12-04  
以前用过这玩意儿去抓别人网站上的数据。。。
3 楼 weifly 2007-12-04  
HttpClient发布版中没有带所依赖的类库,因此,Jvm会提示找不到类文件,需要自己到apche网站上去下载,现在记不清要用那些类库勒,好像要:
common-logging.jar,
common-codec.jar,
common-collection.jar,
commons-beanutils.jar
还有其他的类库,自己运行时看缺那个类吧,自己找一下
2 楼 presses 2007-12-03  
注意header中的Content-Length属性。
1 楼 duronshi 2007-12-03  
你好,我从www.apache.org官方网上下了个HttpClient文件,我将所有类按要求放到class\下,编译通不过,将.jar文件放到lib下,创建对象时提示包找不到?请问,该如何解决?谢谢

相关推荐

    httpclient和RestfuL风格上传下载文件

    在Java开发中,HTTPClient和RESTful风格的接口被广泛用于实现文件的上传与下载功能。HTTPClient是一个强大的HTTP客户端库,而RESTful是一种轻量级的、基于HTTP协议的软件架构风格,常用于构建Web服务。在分布式系统...

    Android使用HttpClient实现上传下载功能并监控进度

    本教程将详细介绍如何利用HttpClient实现文件的上传与下载,并且实时监控进度,以便在UI上显示进度条。 首先,理解HttpClient的基本用法是至关重要的。HttpClient是Apache的一个组件,它提供了丰富的API来构建网络...

    httpclient 3.1 jar包 手册 源代码

    《HttpClient 3.1:深入理解与应用》 ...本手册将详细探讨HttpClient 3.1版本,包括其源代码分析和使用指南,帮助...通过深入理解其源代码和使用手册,开发者可以有效地利用HttpClient来构建高质量的HTTP客户端应用程序。

    httpclient所需JAR包

    标题“httpclient所需JAR包”表明我们正在讨论与使用HTTPClient库相关的Java档案(JAR)文件。 描述中的内容简洁,但可以...正确地将这些JAR包加入项目,可以确保你能够利用HTTPClient的功能来实现高效的网络通信。

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    4. **请求和响应处理**:通过HttpEntity和HttpEntityEnclosingRequest接口,HttpClient支持各种类型的请求实体和响应实体,如文本、图片、文件等。 5. **异步请求**:虽然HttpClient 3.0主要设计为同步模型,但通过...

    android HttpClient 上传图片

    在Android开发中,使用`HttpClient`进行图片上传是一项常见的需求,尤其在实现用户头像上传、照片分享等功能时。下面将详细解析如何利用`HttpClient`完成这一任务。 ### 使用`HttpClient`上传图片的关键步骤 #### ...

    java下载图片的几种方式,提供源代码

    下面是如何使用HttpClient下载图片: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import ...

    Android Asynchronous HTTPClient的实现和优化

    - 使用 Picasso 或 Glide 加载图片,它们能够优雅地处理网络图片加载。 - 使用 RxJava 结合 Retrofit,利用其强大的异步处理能力,实现复杂的网络请求逻辑。 总之,Android Asynchronous HTTPClient是实现异步网络...

    Httpclient+testng接口测试小例子

    本示例将探讨如何利用Apache HttpClient库与TestNG框架进行接口测试,以提高测试效率和准确性。 Apache HttpClient是一个开源Java库,允许开发者发送HTTP请求并接收响应,支持多种HTTP协议版本,包括HTTP/1.1和...

    用HttpClient类实现查询申通快递的功能

    本文将详细介绍如何利用`HttpClient`类来实现查询申通快递的功能。 #### 二、HttpClient简介 `HttpClient`是一种用于发送HTTP请求并接收HTTP响应的工具库。它为开发者提供了高级别的API来执行HTTP操作,如GET、POST...

    httpclient4.3 封装工具类.zip

    - **重用连接**:利用HttpClient的连接复用机制,减少网络延迟。 - **超时设置**:合理设置请求和连接超时,防止程序阻塞。 6. **SSL支持**:HttpClient支持HTTPS通信,可以配置SSLContext和KeyManager/...

    commons-httpclient-3.1 java API详细index格式文档

    2. 连接池管理:`MultiThreadedHttpConnectionManager`可以管理连接池,控制最大连接数和每个路由的最大连接数,以优化性能和资源利用。 五、Cookie管理 1. `CookieSpec`接口和`CookiePolicy`枚举:定义了Cookie的...

    抓取整站图片.rar

    在找到图片链接后,我们再次利用HttpClient下载图片。通常,我们会将图片保存到本地,可能需要创建一个文件夹结构来分类存储,同时处理可能出现的重名、错误链接等问题。为了提高效率,可能会采用多线程或者异步下载...

    HttpClient 文件上传

    在这个场景中,我们主要关注如何使用HttpClient进行文件上传。 文件上传通常涉及到Web服务器与客户端之间的交互,比如用户通过网页上传图片或...通过理解这些概念,你可以更有效地利用HttpClient实现文件上传功能。

    HttpClient4.5.1手册

    ### HttpClient4.5.1 手册知识点概览 #### 一、基础知识 **1.1 请求执行** - **HTTP请求:** 在客户端与服务器之间的交互过程中,客户端发送的每一条消息都称为一个请求。HTTP请求由三部分组成:请求行、请求头...

    httpclient的三个Apache开源项目的jar包

    然后,可以使用Mime4j创建和构造多部分POST请求的MIME实体,接着利用Commons IO处理数据流,最后通过HttpClient发送由HttpCore支持的HTTP请求。这样,即使是在Android原生HTTPClient功能有限的情况下,也能实现强大...

    android httpclient文件上传 http协议post get方法向服务器传输数据

    通过学习和理解这些代码,开发者可以更好地掌握如何在Android应用中利用HTTPClient与服务器进行数据交互。 总结来说,本项目通过具体的代码示例,深入浅出地介绍了Android中HTTPClient的使用,包括GET和POST请求的...

    commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging-1.1.jar)

    在图片上传中,开发者可能利用HttpClient来发起POST请求,将图片数据作为请求体发送到服务器。 3. **commons-logging-1.1.jar**:这个JAR文件是Apache Commons Logging库的1.1版本。Logging库提供了一个接口层,...

    C#下载Url图片

    HttpClient提供了发送HTTP请求并接收响应的方法,我们可以利用其GetByteArrayAsync方法获取图片的二进制数据,然后将其保存到本地文件系统。 以下是简单的URL图片下载步骤: 1. 创建一个HttpClient实例。 2. 使用...

    cocos2dx HttpClient网络访问

    通过合理利用HttpClient,开发者可以轻松地构建网络通信功能,实现游戏与服务器之间的数据交换,从而提升游戏体验和功能多样性。在实际项目中,开发者需要根据项目需求,灵活运用HttpClient提供的接口和特性,以满足...

Global site tag (gtag.js) - Google Analytics