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

利用HttpClient下载图片

 
阅读更多
源:http://weifly.iteye.com/blog/145457
评:
最近在项目中用到了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是Apache组织的一个项目,作为Http客户端类库,功能十分强大,正在关注这个项目中,欢迎大家和我交流使用HttpClient类库的经验!
分享到:
评论

相关推荐

    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`上传图片的关键步骤 #### ...

    Android Asynchronous HTTPClient的实现和优化

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

    Httpclient+testng接口测试小例子

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

    httpclient4.3 封装工具类.zip

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

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

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

    抓取整站图片.rar

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

    HttpClient 文件上传

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

    HttpClient4.5.1手册

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

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

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

    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提供的接口和特性,以满足...

    HtmlParser和HttpClient学习资料

    - HttpClient的使用指南:详述如何利用HttpClient发送HTTP请求并处理响应。 - 网络爬虫项目实例:提供完整的爬虫代码,供学习者参考和实践。 - 爬虫进阶话题:可能涵盖反爬虫策略、多线程爬虫、数据清洗等高级主题。...

    使用HttpClient 和 jsoup 下载 Google logo

    Google的logo,感觉设计的很好,最近看了java的jsoup(html 解析器)把Google的logo全部下载下来,另外,在Google logos页面发现都是英文的,通过利用Google翻译api对logo说明进行翻译,最终把图片信息以及翻译结果...

Global site tag (gtag.js) - Google Analytics