美文网首页
Android AsyncHttp访问网络下载文件

Android AsyncHttp访问网络下载文件

作者: ryanxun | 来源:发表于2020-10-11 20:18 被阅读0次
    嘿,今天的你过的还好吗,今天分享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的情况

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

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

    相关文章

      网友评论

          本文标题:Android AsyncHttp访问网络下载文件

          本文链接:https://www.haomeiwen.com/subject/euaepktx.html