您当前的位置: 首页 >  网络

Kevin-Dev

暂无认证

  • 0浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android -- 网络请求】EasyHttp 的基本使用

Kevin-Dev 发布时间:2022-05-18 20:00:00 ,浏览量:0

在这里插入图片描述

前言

Android 网络请求框架,简单易用。

GitHub 地址:EasyHttp

在这里插入图片描述

Gradle 集成
  • 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入
allprojects {
    repositories {
        // JitPack 远程仓库:https://jitpack.io
        maven { url 'https://jitpack.io' }
    }
}
  • 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {
    repositories {
        // JitPack 远程仓库:https://jitpack.io
        maven { url 'https://jitpack.io' }
    }
}
  • 在项目 app 模块下的 build.gradle 文件中加入远程依赖
// 网络请求框架:https://github.com/getActivity/EasyHttp
    implementation 'com.github.getActivity:EasyHttp:11.2'
    // OkHttp 框架:https://github.com/square/okhttp
    // noinspection GradleDependency
    implementation 'com.squareup.okhttp3:okhttp:3.12.13'
配置权限
	
    
    
    
    

    
    
    
服务器配置
public class ReleaseServer implements IRequestServer {
    @NonNull
    @Override
    public String getHost() {
        return "https://www.wanandroid.com/";
    }
}
初始化
public class MyAPP extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ToastUtils.init(this);
        // MMKV.initialize(this);

        // 网络请求框架初始化
        IRequestServer server;
        if (BuildConfig.DEBUG) {
            server = new TestServer();
        } else {
            server = new ReleaseServer();
        }

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .build();

        EasyConfig.with(okHttpClient)
                // 是否打印日志
                //.setLogEnabled(BuildConfig.DEBUG)
                // 设置服务器配置
                .setServer(server)
                // 设置请求处理策略
                .setHandler(new RequestHandler(this))
                // 设置请求参数拦截器
                .setInterceptor(new IRequestInterceptor() {
                    @Override
                    public void interceptArguments(@NonNull HttpRequest httpRequest,
                                                   @NonNull HttpParams params,
                                                   @NonNull HttpHeaders headers) {
                        headers.put("timestamp", String.valueOf(System.currentTimeMillis()));
                    }
                })
                // 设置请求重试次数
                .setRetryCount(1)
                // 设置请求重试时间
                .setRetryTime(2000)
                // 添加全局请求参数
                .addParam("token", "6666666")
                // 添加全局请求头
                //.addHeader("date", "20191030")
                .into();
    }
}
配置接口
public final class SearchAuthorApi implements IRequestApi {
    @NonNull
    @Override
    public String getApi() {
        return "wxarticle/chapters/json";
    }

    /** 公众号 id */
    private int id;

    public SearchAuthorApi setId(int id) {
        this.id = id;
        return this;
    }

    public final static class Bean {

        private int courseId;
        private int id;
        private String name;
        private int order;
        private int parentChapterId;
        private boolean userControlSetTop;
        private int visible;

        public int getCourseId() {
            return courseId;
        }

        public int getId() {
            return id;
        }

        public String getName() {
            return name;
        }

        public int getOrder() {
            return order;
        }

        public int getParentChapterId() {
            return parentChapterId;
        }

        public boolean isUserControlSetTop() {
            return userControlSetTop;
        }

        public int getVisible() {
            return visible;
        }
    }
}
Get 请求
			EasyHttp.get(this)
                    .api(new SearchAuthorApi()
                            .setId(190000))
                    .request(new HttpCallback(this) {

                        @Override
                        public void onSucceed(HttpData result) {
                            ToastUtils.show("Get 请求成功,请看日志");
                        }
                    });
Post 请求
			EasyHttp.post(this)
                    .api(new SearchBlogsApi()
                            .setKeyword("搬砖不再有"))
                    .request(new HttpCallback(this) {

                        @Override
                        public void onSucceed(HttpData result) {
                            ToastUtils.show("Post 请求成功,请看日志");
                        }
                    });
上传文件
			// 如果是放到外部存储的应用专属目录则不需要适配分区存储特性
            File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "我是测试专用的图片.png");

            if (!file.exists()) {
                // 生成图片到本地
                try {
                    Drawable drawable = ContextCompat.getDrawable(this, R.drawable.bg_material);
                    OutputStream outputStream = EasyUtils.openFileOutputStream(file);
                    if (((BitmapDrawable) drawable).getBitmap().compress(Bitmap.CompressFormat.PNG, 100, outputStream)) {
                        outputStream.flush();
                    }
                    // 通知系统多媒体扫描该文件,否则会导致拍摄出来的图片或者视频没有及时显示到相册中,而需要通过重启手机才能看到
                    MediaScannerConnection.scanFile(this, new String[]{file.getPath()}, null, null);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            EasyHttp.post(this)
                    .api(new UpdateImageApi(file))
                    .request(new OnUpdateListener() {

                        @Override
                        public void onStart(Call call) {
                            mProgressBar.setProgress(0);
                            mProgressBar.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onProgress(int progress) {
                            mProgressBar.setProgress(progress);
                        }

                        @Override
                        public void onSucceed(Void result) {
                            ToastUtils.show("上传成功");
                        }

                        @Override
                        public void onFail(Exception e) {
                            ToastUtils.show("上传失败");
                        }

                        @Override
                        public void onEnd(Call call) {
                            mProgressBar.setVisibility(View.GONE);
                        }
                    });

项目地址:传送门

关注
打赏
1658837700
查看更多评论
立即登录/注册

微信扫码登录

0.3607s