`

HttpClient 资源下载

阅读更多

 

 

import java.io.BufferedReader;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.commons.io.IOUtils;

public class HttpClientUtil {

 

public static HttpClient getHttpClient(){

// 创建客户端

HttpClient client = new DefaultHttpClient();

return client;

}

/**

* 通过url加载字符串

* @author:qiuchen

* @createTime:2012-7-9

* @param url

* @return

*/

public static String get(String url) {

String messageStr = null;

// 创建HttpClient实例

HttpClient httpClient = getHttpClient();

// Http Get 请求

HttpGet get = new HttpGet(url);

// 获得服务器响应的所有信息

HttpResponse response = null;

try {

response = httpClient.execute(get);

int state = response.getStatusLine().getStatusCode();

if(state == HttpStatus.SC_OK){ //状态码=200

// 获得服务器响应的信息(除head部分,源代码中是看不到的)

HttpEntity entity = response.getEntity();

//获取输入流

InputStream input = entity.getContent();

// 缓冲读取器

BufferedReader reader = new BufferedReader(new InputStreamReader(input,"utf-8"));

StringBuffer sb = new StringBuffer();

String line = null;

while((line=reader.readLine()) != null) {

sb.append(line);

}

reader.close();

input.close();

messageStr = sb.toString();

}else{

System.out.println("load json music error");

}

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally{

if(httpClient != null){

httpClient.getConnectionManager().shutdown();

}

}

return messageStr;

}

/**

* 通过url下载数据到本地文件

* @author:qiuchen

* @createTime:2012-7-9

* @param url

* @return

*/

public static boolean download(String url){

//创建客户端

HttpClient httpClient = getHttpClient();

 

//文件下载路径

String savePath = "f:/data.txt";

 

// Http Get 请求

HttpGet get = new HttpGet(url);

 

// 获得服务器响应的所有信息

HttpResponse response = null;

try {

response = httpClient.execute(get);

//状态码

int state = response.getStatusLine().getStatusCode();

System.out.println(state);

if(state == HttpStatus.SC_OK){ //状态码=200

// 获得服务器响应的信息(除head部分,源代码中是看不到的)

HttpEntity entity = response.getEntity();

System.out.println("fileLength:"+entity.getContentLength());

System.out.println(entity);

//获取输入流

InputStream input = entity.getContent();

//定义输出文件(文件格式要和资源匹配)

FileOutputStream bout = new FileOutputStream(savePath);

//COPY

IOUtils.copy(input, bout);

 

input.close(); // 关闭输入流

bout.close(); //关闭输出流

 

System.out.println("download success");

}else{

System.out.println("read error");

}

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally{

if(httpClient != null){

httpClient.getConnectionManager().shutdown();

}

}

return true;

}

}

 

分享到:
评论

相关推荐

    安卓httpClient例子

    - `httpmime-4.0.1.jar`: 这个库扩展了HttpClient,支持MIME类型,使得上传和下载文件变得简单。 3. **创建HttpClient实例** 在Android中,首先需要初始化一个HttpClient实例,这通常通过`HttpClientBuilder`或`...

    httpclient多线程下载(分段下载)实践

    本篇文章将深入探讨如何使用HTTPClient进行多线程分段下载的实践。 首先,我们要理解多线程下载的基本原理。多线程下载是通过将大文件分割成多个小段,每个线程负责下载一个或多个段,这样可以充分利用多核处理器的...

    HttpClient实现文件下载

    ### HttpClient 实现文件下载 #### 一、简介与原理 在Java开发中,经常会遇到需要通过HTTP协议来获取网络资源的需求,例如从Web服务器下载文件。Apache HttpClient 是一个用于发送HTTP请求的Java类库,它提供了...

    org.apache.commons.httpclient 远程下载文件

    在本篇讨论中,我们将深入理解如何使用HttpClient来实现远程文件下载。 首先,我们需要导入必要的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>commons-httpclient ...

    ESP8266HTTPClient.zip

    请求完成后,记得释放HTTPClient资源,防止内存泄漏: ```cpp http.end(); ``` 9. **应用示例**: ESP8266HTTPClient常用于物联网项目,如通过HTTP API控制智能家居设备、从云服务器获取配置信息、或者将...

    org.apache.commons.httpclient资源包(4.2)

    这个资源包,"org.apache.commons.httpclient资源包(4.2)",是该库的一个特定版本,即4.2版,提供了对HTTP协议的强大支持,使开发者能够方便地与Web服务器进行交互。 在HttpClient 4.2中,有几个关键知识点值得...

    httpclient-4.3.3和httpcore-4.2.1资源下载

    在使用HTTPClient和HTTPCore时,需要注意的是,这两个库都需要正确配置连接管理,以确保有效利用系统资源,避免过多的并发连接导致的问题。此外,对于安全性要求较高的应用,应考虑使用SSL/TLS加密,设置信任的证书...

    java使用HttpClient通过url下载文件到本地

    - 关闭HttpClient实例以释放资源,防止内存泄漏。 - 如果文件较大,考虑使用`StreamingEntity`或分块读写,以避免一次性加载整个响应内容导致内存溢出。 6. **DownloadData文件**: 压缩包中的`DownloadData`...

    HttpClient实现POST GET和文件下载

    HttpClient提供了一种便捷的方式来下载文件: 1. **创建HttpGet请求**:指定要下载文件的URL。 2. **执行请求**:发送请求并获取`HttpResponse`。 3. **准备输出流**:创建一个本地文件,并用`FileOutputStream`...

    通过 HttpClient 下载 文件

    7. **释放资源**:最后,记得关闭输入流和释放HttpClient资源。 ```java inputStream.close(); getMethod.releaseConnection(); ``` 在实际应用中,我们可能需要处理更复杂的情况,比如分块下载、断点续传、多...

    commons-httpclient.rar

    2. **连接管理**:HttpClient包含一个连接管理器,用于控制到服务器的连接,包括连接池的创建、管理和复用,有助于提高性能和资源利用率。 3. **请求和响应处理**:HttpClient可以设置请求头、参数、编码方式等,并...

    通过HTTPClient获取网络资源

    本篇文章将深入探讨如何使用`HttpClient`来获取网络资源,以及处理返回的XML数据。 首先,我们需要了解`HttpClient`的基本用法。在Java中,创建一个`HttpClient`实例是获取网络资源的第一步。`HttpClient`提供了...

    httpclient.jar 文件下载

    此外,正确管理和关闭HttpClient实例以及响应实体非常重要,以防止资源泄漏。 总之,httpclient.jar作为JAVA扩展组件,是Java开发者进行HTTP通信的强大工具。通过理解其核心功能、API使用和最佳实践,我们可以更...

    httpclient和RestfuL风格上传下载文件

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

    HttpClient-4.3.6

    - 配置合适的连接池大小,以平衡资源利用和性能。 - 正确处理异常,避免程序因为网络问题而中断。 - 使用最新的HttpClient版本,以获取最新的安全修复和功能改进。 总之,HttpClient-4.3.6是Java开发者进行HTTP通信...

    Arduino HttpClient 库文件

    1. **实例化 HttpClient 对象**:首先,你需要创建一个 `HttpClient` 类的实例,例如 `HttpClient client;` 2. **设置服务器信息**:调用 `client.begin()` 函数,传入你要访问的服务器地址和端口号,如 `client....

    httpclient-4.5.2.jar.zip

    - **创建HttpClient实例**:使用`HttpClientBuilder`构建器创建HttpClient对象,可以配置连接池大小、超时等参数。 - **构建HttpGet/HttpPost请求**:通过`HttpGet`或`HttpPost`构造HTTP请求,设置URL、方法和请求...

    httpclient JAR包下载

    这个JAR包下载通常用于构建网络通信功能,尤其是在进行Web服务调用、网页抓取或者API接口测试时非常有用。 在Java中,HTTPClient库提供了多种类和接口,例如`CloseableHttpClient`用于创建HTTP客户端实例,`...

    httpClient post 上传 下载 图片

    - URI(Uniform Resource Identifier)是资源的唯一标识,上传和下载时,只需要改变`HttpPost`或`HttpGet`对象的URI即可指向不同的服务器地址。 - 如果需要动态修改URI,可以使用字符串操作函数,如替换或拼接,...

    Httpclient资源包.zip

    这个"Httpclient资源包.zip"可能包含了各种与HttpClient相关的代码示例、文档、库文件和其他辅助材料,帮助开发者更好地理解和使用这个库。下面,我们将深入探讨HttpClient的核心概念、功能以及如何在实际项目中应用...

Global site tag (gtag.js) - Google Analytics