栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[Java]通过okhttp3库实现下载文件

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Java]通过okhttp3库实现下载文件

0.前言

最近对M3U8解析特别感兴趣,通过python脚本简单实现了解析m3u8和多线程下载之后,想用Java、Kotlin还有C/C++尝试实现。

本文主要实现使用OKHttp3实现非常简单的Http文件下载,然后保存在本地。

没有多线程的部分,多线程部分会单独写一个笔记

1.maven安装
  
         
             com.squareup.okhttp3
             okhttp
             4.9.0
         
         
             junit
             junit
             4.12
             test
         
         
             org.junit.jupiter
             junit-jupiter-api
             5.5.0
             test
         
     

分别是okhttp3、junit、jupiter。后两者用于测试模块,没有需求的话可以不导

2.通过Funciton获取ResponseBody
 public ResponseBody getResponeBody(String url)
     {
         ResponseBody result =null;
         OkHttpClient okHttpClient = new OkHttpClient();
         Request request = new Request.Builder()
                 .url(url)
                 .build();
         Call call = okHttpClient.newCall(request);
         try {
             Response response = call.execute();
 //            System.out.println(response.headers());
 //            System.out.println(response.body().string());
             result = response.body();
         } catch (IOException e) {
             e.printStackTrace();
         }
         return result;
     }
  • 这边要注意的是ResponeseBody.string()只能调用一次。

3.处理ResponseBody获取String或者是IOStream

通过简单的转换获得。 

//获取String
 String res = ResponseBody.string();
     
 //获取InputStream
 InputStream is = ReasponseBody.byteStream();
4.保存文件

属于基本的文件操作,直接把函数贴上来

//将InputStream写入到文件,成功返回true 失败返回false
     public boolean WriteFile4InputStream(String FilePath,InputStream inputStream)
     {
         //默认为flase 即失败
         boolean result = false;
         try {
             OutputStream os = new FileOutputStream(FilePath);
             os.write(inputStream.readAllBytes());
             os.close();
             result = true;
         }catch (IOException e)
         {
             e.printStackTrace();
             result = false;
         }
         return result;
     }

Code:

Gitee

Github

参考:

Java发送http请求方法之OkHttp3

从OKHTTP下载二进制文件

java 保存inputstream

Maven工程使用Junit进行单元测试

Java 流(Stream)、文件(File)和IO

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号