如果大家对WEB研发有兴趣
可以加入Q群:46176507 共同进步学习
有时需要通过httpclient进行文件下载,下面是文件下载的实现过程
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
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;
public class SearchDomain {
public static void main(String[] args) throws ClientProtocolException, IOException {
//实例化一个HttpClient
HttpClient httpClient = new DefaultHttpClient();
//设定目标站点 web的默认端口80可以不写的 当然如果是其它端口就要标明
HttpHost httpHost = new HttpHost("www.shanhe114.com",80);
//设置需要下载的文件
HttpGet httpGet = new HttpGet("/test.zip");
//这里也可以直接使用httpGet的绝对地址,当然如果不是具体地址不要忘记/结尾
//HttpGet httpGet = new HttpGet("http://www.0431.la/");
//HttpResponse response = httpClient.execute(httpGet);
HttpResponse response = httpClient.execute(httpHost, httpGet);
if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
//请求成功
//取得请求内容
HttpEntity entity = response.getEntity();
//显示内容
if (entity != null) {
//这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明
System.out.println(entity.getContentType());
//可以判断是否是文件数据流
System.out.println(entity.isStreaming());
//设置本地保存的文件
File storeFile = new File("c:/0431la.zip");
FileOutputStream output = new FileOutputStream(storeFile);
//得到网络资源并写入文件
InputStream input = entity.getContent();
byte b[] = new byte[1024];
int j = 0;
while( (j = input.read(b))!=-1){
output.write(b,0,j);
}
output.flush();
output.close();
}
if (entity != null) {
entity.consumeContent();
}
}
}
}
需要说明这里我并没验证文件的类型,实际操作中可以通过url的后缀提取 或者ContentType的类型
分享到:
相关推荐
### HttpClient 实现文件下载 #### 一、简介与原理 在Java开发中,经常会遇到需要通过HTTP协议来获取网络资源的需求,例如从Web服务器下载文件。Apache HttpClient 是一个用于发送HTTP请求的Java类库,它提供了...
HttpClient提供了一种便捷的方式来下载文件: 1. **创建HttpGet请求**:指定要下载文件的URL。 2. **执行请求**:发送请求并获取`HttpResponse`。 3. **准备输出流**:创建一个本地文件,并用`FileOutputStream`...
在这个主题中,我们将深入探讨HttpClient 4如何实现文件上传,以及相关的核心概念和技术。 首先,我们需要了解HttpClient 4的基本用法。HttpClient 4依赖于几个关键的组件,包括`httpclient-4.0.jar`(核心客户端库...
提到code.jar包,这通常是指包含代码实现的库文件,可能包含了HttpClient的额外功能或者特定项目中的自定义代码。在某些情况下,code.jar可能是项目依赖的其他组件,与httpclient.jar一起使用以完成更复杂的任务。...
综上所述,通过Java的HttpClient库,可以在Eclipse环境中编写程序,实现从指定URL下载文件到本地的功能。通过理解HttpClient的工作原理和提供的API,开发者可以构建出稳定、高效的文件下载解决方案。
在IT行业中,网络编程是不可或缺的一...通过合理的设计和实现,可以显著提升大文件下载的速度和用户体验。在实际编码中,开发者需要关注线程安全、错误处理、进度监控和资源管理等多个方面,以确保系统的稳定性和性能。
- HttpClient 4支持异步操作,使用`HttpAsyncClient`,可以实现非阻塞的请求/响应处理。 - 异步请求的回调可以通过`Future<HttpResponse>`和` HttpContext`来处理。 6. **重试策略和异常处理**: - 可以配置重试...
本文档将详细介绍如何使用HttpClient 4.x版本实现文件上传功能。 #### 二、核心类与接口介绍 1. **HttpClient**: - `HttpClient`是Apache HttpClient提供的核心接口,用于执行HTTP请求并获取响应。 - 在本例中...
httpclient.jar文件包含了HttpClient的所有核心类和方法,使得开发者可以便捷地集成到自己的Java应用中。 二、主要功能与API 1. HTTP请求:HttpClient允许开发者创建各种类型的HTTP请求,如GET、POST、PUT、DELETE...
在Java开发中,HTTPClient和RESTful风格的接口被广泛用于实现文件的上传与下载功能。HTTPClient是一个强大的HTTP客户端库,而RESTful是一种轻量级的、基于HTTP协议的软件架构风格,常用于构建Web服务。在分布式系统...
本教程将详细介绍如何利用HttpClient实现文件的上传与下载,并且实时监控进度,以便在UI上显示进度条。 首先,理解HttpClient的基本用法是至关重要的。HttpClient是Apache的一个组件,它提供了丰富的API来构建网络...
本主题将深入探讨如何利用HttpClient实现文件的下载功能,同时也会涉及相关的源码解析和辅助工具的使用。 首先,HttpClient是一个Java库,它允许开发者以一种与HTTP协议兼容的方式发送请求并接收响应。它提供了丰富...
在Java环境中,`httpclient.jar`是HttpClient库的二进制文件,通常通过Maven或Gradle等构建工具作为依赖引入项目。将`httpclient.jar`下载并添加到项目类路径中,即可使用HttpClient的功能。 总的来说,HttpClient...
在本篇讨论中,我们将深入理解如何使用HttpClient来实现远程文件下载。 首先,我们需要导入必要的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>commons-httpclient ...
文件下载通常通过GET请求实现,HTTPClient 4中的`HttpGet`类就是为此设计的。你可以创建一个`HttpGet`实例,指定文件的URL,然后使用`HttpClient.execute()`方法发送请求。为了保存下载的文件,你可以创建一个`...
标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...
- **文件上传下载**:通过POST或PUT请求,HttpClient 可以实现文件的上传,通过GET请求实现文件的下载。 - **模拟登录**:HttpClient 支持多种身份验证机制,可以用来模拟用户登录网站。 5. **最佳实践** - **...
`HttpClient.cpp` 文件是实现文件,它实现了 `HttpClient.h` 中声明的类和函数。在这里,你可以找到实际执行 HTTP 请求的代码,如建立 TCP 连接、发送数据、接收响应等低级网络操作。这些功能通常是基于 Arduino 的 ...