最近对M3U8解析特别感兴趣,通过python脚本简单实现了解析m3u8和多线程下载之后,想用Java、Kotlin还有C/C++尝试实现。
本文主要实现使用OKHttp3实现非常简单的Http文件下载,然后保存在本地。
没有多线程的部分,多线程部分会单独写一个笔记
1.maven安装com.squareup.okhttp3 okhttp4.9.0 junit junit4.12 test org.junit.jupiter junit-jupiter-api5.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()只能调用一次。
通过简单的转换获得。
//获取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


![[Java]通过okhttp3库实现下载文件 [Java]通过okhttp3库实现下载文件](http://www.mshxw.com/aiimages/31/269308.png)
