Java开发笔记(一百一十三)HttpClient实现下载与上传

本文详细讲解如何使用HttpClient在Java中实现文件的下载和上传。文件下载通过BodyHandlers.ofFile方法简化操作,文件上传则需借助Apache的HttpEntity类。HttpClient支持同步和异步方式,异步调用通过sendAsync方法实现。
摘要由CSDN通过智能技术生成

前面介绍了通过HttpClient实现HTTP接口的GET方式调用和POST方式调用,那么文件下载与文件上传又该如何操作呢?其实在HttpClient看来,文件下载属于特殊的GET调用,只不过应答报文由字符串形式变成了文件形式;同样文件上传属于特殊的POST调用,只不过请求报文也由字符串形式变成了文件形式。那么文件下载与普通的GET调用相比,在代码上的区别仅仅是发送请求send方法的第二个参数,之前演示普通GET调用的时候,send方法第二个输入参数为BodyHandlers.ofString(),具体调用代码如下所示:

	// 客户端传递请求信息,且返回字符串形式的应答报文
	HttpResponse<String> response = client.send(request, BodyHandlers.ofString());

上面代码里的BodyHandlers名叫报文体处理器,它会将服务端返回的应答数据转换为指定形式,比如调用ofString方法表示自动把应答数据转成字符串。除了字符串,BodyHandlers还支持把应答数据转为其它格式,它支持的转换格式及其设置方法说明如下:
ofString:把应答数据转换为字符串。
ofByteArray:把应答数据转换为字节数组。
ofFile:把应答数据转换为文件(Path类型)。
ofInputStream:把应答数据转换为输入流。
ofLines:把应答数据转换为分行的字符串流(Stream类型)。
就文件下载而言,无疑使用ofFile方法最合适,因为该方法可将应答数据保存到本地文件,省去了繁琐的I/O操作。于是对普通的GET调用代码稍加改造,就变成了以下的文件下载代码:

// 从指定url下载文件到本地(同步方式)
private static void testSyncDownload(String path, String downloadUrl) {
	// 从下载地址中获取文件名
	String fileName = downloadUrl.substring(downloadUrl.lastIndexOf("/"));
	// 创建默认的HTTP客户端对象
	HttpClient client = HttpClient.newHttpClient();
	// 创建默认的HTTP请求对象(默认GET调用)
	HttpRequest request = HttpRequest.newBuilder
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值