`
fenglin
  • 浏览: 31777 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HttpClient 实现下载图片

    博客分类:
  • Java
阅读更多
最近在项目中用到了HttpClient类库,有一个需求是下载网站中的图片,但是发现下载的图片不能打开,在网上搜索类似问题,没有找到解决的办法,无奈只得查看HttpClient的源代码,自己解决这个问题了。
在HttpMethodBase中发现如下代码:


public String getResponseBodyAsString() throws IOException {   
        byte[] rawdata = null;   
        if (responseAvailable()) {   
            rawdata = getResponseBody();   
        }   
        if (rawdata != null) {   
            return EncodingUtil.getString(rawdata, getResponseCharSet());   
        } else {   
            return null;   
        }   
    }  

其中在返回网络资源的内容时,使用了指定的编码对网页内容或图片内容进行了编码,这样,对于图片来说内容当然不能显示了,所以在获得图片内容时要使用如下的方法:


public byte[] getResponseBody() throws IOException    
或   
public InputStream getResponseBodyAsStream() throws IOException 
 
在把返回的内容存储到文件中,这样就实现了图片的自动下载,下面的代码演示了下载图片的过程

 
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下载图片

    HttpURLConnection与HttpClient的区别: HttpClient是个很不错的...HttpURLConnection是java的标准类,可以实现简单的基于URL请求、响应功能,什么都没封装,用起来太原始,比如重访问的自定义,以及一些高级功能等。

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

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

    httpClient及android 原生接口实现下载并显示图片 源码

    《 httpClient及android 原生接口实现下载并显示图片》博客对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/17609771

    httpClient post 上传 下载 图片

    - 读取`HttpEntity`的内容并写入到本地文件,实现图片的下载。 3. **修改上传和下载的URI**: - URI(Uniform Resource Identifier)是资源的唯一标识,上传和下载时,只需要改变`HttpPost`或`HttpGet`对象的URI...

    httpclient和RestfuL风格上传下载文件

    通过HTTPClient实现HTTP请求,利用RESTful接口定义清晰的操作方式,可以构建高效、灵活的文件传输方案。同时,理解并遵循良好的编程实践,如编写详细注释,对于提高代码质量和团队效率也是十分重要的。

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

    ### 使用HttpClient类实现查询申通快递功能的知识点详解 #### 一、背景介绍 随着电子商务的迅速发展,物流服务已成为日常生活中不可或缺的一部分。对于企业和个人用户来说,能够实时查询包裹的状态变得尤为重要。...

    Android Asynchronous HTTPClient的实现和优化

    在Android开发中,网络通信是应用的核心功能之一,而`Android Asynchronous HTTPClient`(也称为AsyncHttpClient)是一个流行的库,用于实现异步HTTP请求,它使得开发者可以在不阻塞主线程的情况下执行网络操作,...

    httpclient 3.1 jar包 手册 源代码

    HttpClient是一个由Apache基金会开发的Java库,主要用于执行HTTP请求,实现客户端的HTTP通信。本手册将详细探讨HttpClient 3.1版本,包括其源代码分析和使用指南,帮助开发者充分利用这个强大的工具。 一、...

    Android基于HttpClient实现文件上传,提供进度条接口实现

    总的来说,通过HttpClient实现文件上传并提供进度显示,涉及到网络通信、多部分实体构造、监听进度和UI更新等多个环节。在实际应用中,应考虑性能优化、错误处理和兼容性问题,确保文件上传功能的稳定性和用户体验。

    httpclient爬取美图

    在“httpclient爬取美图”项目中,获取到图片的URL后,可以使用HttpClient下载图片。首先,创建HttpGet请求,然后获取响应的InputStream,再通过FileOutputStream将流写入本地文件: ```java FileOutputStream ...

    Httpclient+testng接口测试小例子

    这可以通过`HttpClientBuilder`类来实现,可以定制化连接管理、超时设置等选项。 3. **构建HTTP请求**:使用HttpClient提供的方法,如`HttpGet`、`HttpPost`等,根据需求创建GET或POST请求。例如,为执行GET请求,...

    c#实现HttpClient拼接multipart/form-data形式参数post提交数据

    使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,

    c++mongoose 实现httpserver,httpclient

    在`HttpClient.h`和`HttpClient.cpp`中,我们有HTTP客户端的实现。客户端用于发起HTTP请求,获取服务器的响应。mongoose库也提供了创建HTTP客户端的功能,通过`mg_connect_http()`函数可以建立到服务器的连接,并...

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

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

    httpclient所需JAR包

    在上传或下载包含多部分数据(如图片、文件等)的HTTP请求时,这个库非常有用。例如,它允许你在POST请求中附加文件,或者在处理包含附件的HTTP响应。 总结起来,这些JAR包组合在一起,为Java开发者提供了一个完整...

    httpclient上传头像,图片,文件

    - 在上传头像或图片之前,需要将其读取到内存中。这通常通过`FileInputStream`实现,然后转换成`InputStream`,以便于添加到HTTP请求的实体中。 5. **设置请求头**: - 在POST请求中,可能需要设置特定的请求头,...

    httpclient4

    - **文件上传下载**:通过POST或PUT请求,HttpClient 可以实现文件的上传,通过GET请求实现文件的下载。 - **模拟登录**:HttpClient 支持多种身份验证机制,可以用来模拟用户登录网站。 5. **最佳实践** - **...

    httpclient使用post方法上传多个图片个其他参数的demo源码

    在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...

    android HttpClient

    在Android应用程序中,`HttpClient`经常被用于实现网络通信,比如上传或下载文件。下面将详细讨论`HttpClient`在Android中的应用及其相关知识点。 一、`HttpClient`基础 1. `HttpClient`类:它是整个框架的核心,...

Global site tag (gtag.js) - Google Analytics