网络请求获取资源之HttpURLConnection的使用
一、HttpUrlConnection简介
访问网络资源可以说是开发过程中非常重要的一个环节,Android开发访问网络资源的需求是比较常见的,虽然java对于网络资源的访问需求不似Android如此频繁,但也是必不可少的,而当前,Http协议是Internet上使用最多,也最重要的网络协议,无可厚非,更多的java程序直接采用http请求访问网络资源
- JDK的java.net包中提供了访问HTTP协议的基本功能的类:HttpURLConnection。
HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定Url发送GET请求、POST请求。它在URLConnection的基础上提供了更加便捷的方法 - 同样进行网络请求的还有Apache的HttpClient,在此不加赘述,对比将另起博文
值得一提的是,Google建议使用httpURLconnection进行网络访问操作。 - 总结:HttpURLConnection基于Http协议,支持get,post,put,delete等各种请求方式,今天就简单走进一下HttpURLConnection的使用
二、代码示例:访问阿里云的一张图片,保存在临时文件中,后续使用可自行拓展
/**
* 将图片从阿里云服务器下载
*/
@Override
public void getLogoFromAli(String logoUrl) throws Exception {
String fileUrl = logoUrl;
URL url = new URL(fileUrl);
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
urlCon.setRequestMethod("GET");
urlCon.setConnectTimeout(6000);
urlCon.setReadTimeout(6000);
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
//读文件流
File imgFile = null;
InputStream inputStream = urlCon.getInputStream();
try{
//创建临时文件
imgFile = File.createTempFile("tmp", ".jpg");
FileUtils.copyInputStreamToFile(inputStream, imgFile);
log.info("=================="+imgFile.length());
if (imgFile.length()>1024*1024) {
throw new Exception("文件超过1M,上传失败");
}
} catch (Exception e) {
e.printStackTrace();
}
/**
*成功获取图片文件imgFile,资源使用自行拓展
*/
log.info("我已经拿到图片啦哈哈哈哈================"+imgFile)
}
三、主流程
- new Url(),设置Url地址
- 创建HttpUrlCollection
- 设置链接相关参数如:请求方式,连接时间等
- 获取响应资源
- 资源处理
四、效果展示
- 一张阿里云图片的地址如下
图片在此
单纯觉得很舒适的一张图,emmmm,工科口味,嘿哈
- 采用postman调用一下示例代码的接口得到
哈哈哈,业务需求得到的文件不能超过1M,打扰了各位,此处容本猴过滤一下它,小插曲,无妨无妨
最终得到的临时文件如下:
我们来看一下有没有成功获取该张图片资源
找到这张图打开
成功获取网络资源图片,至于这张图要怎么处理就是看在座各位的业务需求啦
五、后话但不是屁话
- 这里的资源为图片格式,所以此处创建临时文件格式为jpg格式,并不适用所有网络资源,具体开发,具体应变
- 这里的流是已经关闭了的,apache的工具类FileUtils的该方法是有关流操作的,所以不必手动关流
- 我只是一只可爱的小猴子,如果代码或者某些文字不正确实属正常,欢迎评论指出,我会虚心接受,但不接受恶意攻击滴