Retrofit下载文件
来源:互联网 发布:telnet 重启 端口命令 编辑:程序博客网 时间:2024/06/09 18:15
Retrofit下载文件
第一步,请求接口
//下载图片@Streaming@GETCall<ResponseBody> downloadPicWithUrl(@Url String url);
第二步,请求网络
/** * 保存图片 * * @param baseUrl * @param urlpic */private void downFileWithPic(String baseUrl, final String urlpic, final int type) { OkHttpClient builder = new OkHttpClient.Builder().build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .client(builder) .build(); final HttpPostService fileDownloadApi = retrofit.create(HttpPostService.class); Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { try { Response<ResponseBody> response = fileDownloadApi.downloadPicWithUrl(urlpic).execute(); if (response != null && response.isSuccessful()) { //文件总长度 long fileSize = response.body().contentLength(); long fileSizeDownloaded = 0; InputStream is = response.body().byteStream(); if (AppUtil.isExitsSdcard()) { // 首先保存图片 File file = Environment.getExternalStorageDirectory().getAbsoluteFile();//注意小米手机必须这样获得public绝对路径 String fileName = "picture"; File appDir = new File(file, fileName); if (!appDir.exists()) { appDir.mkdirs(); } String filePicName = null; int indexOf = urlpic.lastIndexOf("."); String picName = urlpic.substring(0, indexOf); // LogUtil.e("picname"+picName); if (type == 1) { filePicName = picName + ".jpg"; } else { filePicName = picName + ".gif"; } File filePic = new File(appDir, filePicName); FileOutputStream fos = null; try { fos = new FileOutputStream(filePic); int count = 0; byte[] buffer = new byte[1024]; while ((count = is.read(buffer)) != -1) { fos.write(buffer, 0, count); fileSizeDownloaded += count; // subscriber.onNext("file download: " + fileSizeDownloaded + " of " + fileSize); } fos.flush(); fos.close(); subscriber.onCompleted(); } catch (Exception e) { e.printStackTrace(); } // 最后通知图库更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(filePic.getAbsolutePath())))); ToastUtil.showSafeToast("保存成功"); } } } catch (IOException e) { e.printStackTrace(); } } }) .subscribeOn(Schedulers.io()) .subscribeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<String>() { @Override public void onCompleted() { Log.e("MainActivity", "文件下载完成"); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { //Log.e("onNext", s); } });}
阅读全文
0 0
- Retrofit下载文件
- Retrofit下载文件
- Retrofit下载文件进度
- Retrofit文件下载进度显示
- RxJava+Retrofit实现文件下载
- Retrofit(二)、使用Retrofit+OkHttp下载文件并带进度条
- 解决Retrofit文件下载进度显示问题
- retrofit 实现文件上传和下载
- Retrofit+Rxjava 下载文件(带进度显示)
- 如何使用Retrofit下载大文件
- 解决Retrofit文件下载进度显示问题
- Retrofit实现文件上传和下载【二】
- 解决Retrofit文件下载进度显示问题
- Retrofit下载
- Retrofit(重构——下载大文件)
- Retrofit 的使用详解(下载 多文件上传)
- Retrofit 使用心得 -使用Retrofit2框架下载大文件
- 一个基于Retrofit的单文件上传、下载框架
- HDU 2709 Sumsets(递推)
- cc1101 简单入门
- NGUI之组件获取
- Retrofit上传文件
- 你知道Python 吗?
- Retrofit下载文件
- 常用导数
- 随机采样 蒙特卡洛
- 在ubuntu下安装qt4.8.5和qtcreator2.8.0
- Windows环境下Code::Blocks中成功配置MySQL Connector/C连接MySQL数据库
- HDU 2701 Max Factor
- Java 修饰符
- Java并发编程实战--this引用逸出
- 中位数