Java使用HttpClient远程下载文件教程

需积分: 10 7 下载量 52 浏览量 更新于2024-09-08 收藏 58KB DOC 举报
"该资源是关于使用HttpClient在Java中实现远程文件下载的示例代码。主要涉及HttpClient库的使用,包括HttpGet方法的调用、响应处理以及文件保存操作。" HttpClient是一个强大的HTTP客户端库,广泛用于Java应用程序中进行HTTP通信。在本示例中,HttpClient被用来从指定URL下载文件到本地。以下是详细的知识点解析: 1. **HttpClient库**:Apache HttpClient是一个开源库,提供了全面的HTTP协议支持,包括标准与扩展的方法、身份验证、缓存、代理、重定向、Cookie管理等功能。 2. **HttpGet方法**:HttpGet是HttpClient中的一个类,用于执行HTTP GET请求。在代码中,首先创建了一个HttpGet实例,并将目标URL传递给构造函数。 3. **HttpClient执行GET请求**:通过`client.executeMethod(httpGet)`执行HTTP GET请求。HttpClient对象负责实际的网络连接和数据传输。 4. **响应处理**:当GET请求执行后,可以获取响应状态码。在代码中,使用了HttpStatus类的静态常量检查返回的状态码,如`HttpStatus.SC_OK`表示请求成功。 5. **文件保存**:从响应中获取输入流`InputStream in=httpGet.getResponseBodyAsStream()`,然后使用FileOutputStream写入到本地文件。注意,确保文件路径的正确性,并处理可能出现的IOException。 6. **异常处理**:在执行HTTP方法时,可能会遇到HttpException和IOException。这些异常应该被捕获并适当地处理,例如记录错误日志或提示用户。 7. **内存缓存**:在代码中,变量`cache`表示缓冲区大小,用于临时存储从网络读取的数据。在实际应用中,可以根据需要调整这个值,以平衡性能和内存使用。 8. **日志系统**:代码中使用了Logger类,可能是自定义的日志系统或者Apache Commons Logging,用于记录下载过程中的信息和错误。 9. **方法参数**:`download`方法接受两个参数,一个是远程文件的URL,另一个是本地保存文件的路径。这使得该方法具有一定的通用性,可以用于下载不同URL上的文件。 10. **代码结构**:代码中定义了一个名为`HttpDownload`的类,包含一个`download`方法,这个设计使得下载功能封装在一个独立的类中,易于复用和维护。 综上,这段代码演示了如何使用HttpClient库在Java程序中实现远程文件的下载功能,涉及了HTTP请求、响应处理和文件I/O等核心概念。在实际项目中,可以根据需求进一步完善,比如添加进度条显示、多线程下载、断点续传等功能。
2016-04-18 上传
Spring为各种远程访问技术提供集成工具类。Spring远程访问通过使用普通POJOs,能更容易的开发远程访问服务。目前,Spring远程访问的主要技术如下: 1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的暴露远程调用(支持任何Java接口)。 2. Spring的HTTP调用器(Spring’s Http Invoker): Spring提供了一种特殊的允许通过HTTP进行Java串行化的远程调用策略,支持任意Java接口(就像RMI调用器)。相对应的支持类是 HttpInvokerProxyFactoryBean和 HttpInvokerServiceExporter。 3. Hessian: 通过 HessianProxyFactoryBean 和 HessianServiceExporter,可以使用Caucho提供的基于HTTP的轻量级二进制协议来透明地暴露服务。 4. Burlap: Burlap是Caucho的另外一个子项目,可以作为Hessian基于XML的替代方案。Spring提供了诸如 BurlapProxyFactoryBean 和 BurlapServiceExporter 的支持类。 5. JAX RPC: Spring通过JAX-RPC为远程Web服务提供支持(J2EE 1.4's web service API)。 6. JAX-WS:Spring通过JAX-WS为远程Web服务提供支持(the successor of JAX-RPC, as introduced in Java EE 5 and Java 6)。 7. JMS:远程访问通过类JmsInvokerServiceExporter和JmsInvokerProxyFactoryBean使用JMS的底层协议实现。 二. 远程访问------RMI 1. RMI远程访问基本流程 1). 服务端定义远程访问接口; 2). 服务端通过RmiServiceExporter暴露服务接口 3). 客户端定义与服务端已暴露的相同接口 4). 客户端通过RmiProxyFactoryBean调用服务接口