package com.ttpod.httpclient;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;
/**
* @className:DownloadFile.java
* @classDescription:
* @author:qiuchen
* @createTime:2012-6-6
*/
public class DownloadFile {
/**
* 从url中下载资源
* @author:qiuchen
* @createTime:2012-6-6
* @param url 图片资源地址
* @param saveDir 保存磁盘,
* @return
* @throws IOException
*/
public static boolean downLoadFile(String url) throws IOException{
//从url中获取文件名
String fileName = getFileNameByUrl(url);
String savePath = "F:\\"+fileName;
System.out.println(savePath);
// 执行请求的客户端
HttpClient client = new DefaultHttpClient();
// Http Get 请求
HttpGet get = new HttpGet(url);
// 获得服务器响应的所有信息
HttpResponse response = null;
try {
response = client.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);
byte[] buffer = new byte[1024 * 100000];
int read = 0;
while ((read = input.read(buffer)) > 0) {
bout.write(buffer,0,read);
System.out.println(read);
}
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{
client.getConnectionManager().shutdown();
}
return true;
}
public static void main(String[] args) {
String url = "http://www.360desk.net/Wallpaper/2010222840dog.jpg";
try {
downLoadFile(url);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 从url地址中获取文件名
* @author:qiuchen
* @createTime:2012-6-12
* @param url
* @return
*/
public static String getFileNameByUrl(String url){
int lastNo = url.lastIndexOf("/"); //最后一个"/"的索引
if(url.substring(lastNo).lastIndexOf(".")==-1){ //one webpage
return url;
}else{
if("".equals(url.substring(url.lastIndexOf("/")+1,url.lastIndexOf(".")))){
getFileNameByUrl(url.substring(0,url.lastIndexOf("/")));
}else{
return url.substring(url.lastIndexOf("/")+1);
}
}
return url;
}
}
分享到:
相关推荐
1. **初始化HTTPClient**:创建HttpClient实例,配置连接参数,如超时时间、重试策略等。 2. **构建HTTP请求**:根据目标URL创建HttpGet或HttpPost对象,添加必要的请求头,如User-Agent、Cookie等。 3. **执行...
标题中的“httpclient and codec download”指的是下载Apache HttpClient和Codec库的过程。这两个组件在Java开发中扮演着重要的角色,特别是当涉及到HTTP通信时。 Apache HttpClient是一个开放源代码Java库,它为...
在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到本地。以下是对这个主题的详细阐述: 1. **HttpClient介绍**: HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级...
在本文中,我们将深入探讨HttpClient的核心概念、使用方法以及如何通过`httpclient.jar`进行实战应用。 首先,HttpClient的主要组件包括: 1. **HttpClient实例**:这是整个HTTP通信的核心,负责管理连接、请求和...
《深入解析httpclient.jar及其与code.jar的关联》 在Java开发中,HTTP通信是不可或缺的一部分,而Apache HttpClient库正是Java实现HTTP客户端操作的重要工具。本文将深入探讨httpclient.jar包,以及它与code.jar包...
HttpClientHelper 对这个类进行了封装,使得开发者无需直接与HttpClient接口打交道,而是通过更简洁、易用的方法调用来实现网络通信。这提高了代码的可读性和可维护性。 单例模式是软件设计模式的一种,确保一个类...
例如,在HttpClient 3.x中,代码可能会使用`***mons.httpclient.HttpClient`类和`***mons.httpclient.methods.GetMethod`等,而在4.x版本中,这些都被新的API所替代。程序员需要熟悉`org.apache....
创建HttpClient实例是使用HttpClient的第一步。通常,我们会创建一个`CloseableHttpClient`对象,这可以通过`HttpClientBuilder`或者`HttpAsyncClientBuilder`来实现。例如: ```java CloseableHttpClient ...
File file = new File("/path/to/download/file"); FileOutputStream fos = new FileOutputStream(file); entity.writeTo(fos); // 关闭流... ``` 以上就是HttpClient在Java中实现GET、POST请求以及文件下载的基本...
本文将深入探讨HttpClient 4.2.1的核心特性和使用方法,帮助开发者更好地理解和应用这个强大的工具。 一、HttpClient简介 HttpClient是一个开放源码的Java库,由Apache软件基金会维护。它为Java程序员提供了一个...
本压缩包文件"httpClient"很可能包含了HttpClient库所需的必备JAR文件,这些文件通常包括HttpClient的核心库、依赖的第三方库以及可能的扩展模块。为了正确使用HttpClient,你需要确保将这些JAR文件添加到你的项目类...
在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService通常涉及SOAP(Simple Object Access Protocol)或RESTful API。HttpClient可以处理这两种类型的Web服务。在本示例中,我们假设...
HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod ...
httpclient-4.5所需jar包,里面包含httpclient-4.5.jar等等10个必须的开发包。 1.commons-codec-1.9.jar 2.commons-logging-1.2.jar 3.fluent-hc-4.5.jar 4.httpclient-4.5.jar 5.httpclient-cache-4.5.jar 6....
1. **实例化 HttpClient 对象**:首先,你需要创建一个 `HttpClient` 类的实例,例如 `HttpClient client;` 2. **设置服务器信息**:调用 `client.begin()` 函数,传入你要访问的服务器地址和端口号,如 `client....
在Java项目中,使用HttpClient可以实现与Web服务器的高效通信。下面将详细介绍这12个jar包的作用及其在HttpClient中的功能: 1. `commons-beanutils-1.8.0.jar`: Apache Commons BeanUtils库提供了对Java Beans属性...
HttpClient提供了丰富的功能,如支持认证、重定向、Cookie管理、请求和响应的处理,以及自定义请求头等。此外,HttpClient还支持异步操作,可以用于并发执行多个HTTP请求,这对于并发性能有较高要求的系统来说非常...
HTTPClient工具类,完整,HTTPClient工具类,完整,HTTPClient工具类,完整HTTPClient工具类,完整,HTTPClient工具类,完整