Android AsyncHttp访问网络下载文件

2020-10-11  本文已影响0人  ryanxun
嘿,今天的你过的还好吗,今天分享AsyncHttp访问网络下载文件,解决totalSize = -1的情况

首先最基本的,引包

implementation 'com.loopj.android:android-async-http:1.4.9'

根据文档的说明,采用FileAsyncHttpResponseHandler可以实现下载文件的功能.

                    AsyncHttpClient mClient = new AsyncHttpClient();
                    //下载的功能
                   //路径
                    final String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/QiHangBookStore/" + bookData.getBookfile() + ".txt";
                    //文件
                    final File file = new File(path);
                    //判断文件是否存在
                    if (file.exists()) {
                        //TODO:打开书籍
                        finalViewHolder.mButton.setText("点击打开");

                    } else {
                        //不存在就创建
                        //默认使用baigzip压缩,导致无法提前获取下载文件的总du大小zhi,不让它压缩即可
                        mClient.addHeader("Accept-Encoding", "identity");
                        mClient.get(bookData.getBookfile(), new FileAsyncHttpResponseHandler(file) {
                            @Override
                            public void onFailure(int statusCode, Header[] headers, Throwable throwable, File file) {
                                //下载失败
                                Log.i("it520", "onFailure: " + throwable);
                                finalViewHolder.mButton.setText("下载失败");
                            }

                            @Override
                            public void onSuccess(int statusCode, Header[] headers, File file) {
                                //下载成功
                                finalViewHolder.mButton.setText("点击打开");
                            }

                            @Override
                            public void onProgress(long bytesWritten, long totalSize) {
                                //进度条
                                super.onProgress(bytesWritten, totalSize);
                                finalViewHolder.mButton.setText(bytesWritten * 100 / totalSize + "%");
                            }
                        });
                    }

注:mClient.addHeader("Accept-Encoding", "identity");这个代码是不让它使用baigzip压缩文件,这样可以解决totalSize = -1的情况

这样就有了下载的逻辑,其他的根据自身情况来进行补充就可以正常使用

没更新动态或者频繁更新动态的时候都是在认真生活

上一篇下一篇

猜你喜欢

热点阅读