GithubHelp home page GithubHelp logo

msdgwzhy6 / okhttp-okdroid Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hcs-xph/okhttp-okdroid

1.0 3.0 0.0 9.02 MB

基于okhttp封装的网络请求库,支持get请求、post请求,文件上传、文件下载,取消请求,支持Json、Gson、Raw返回结果回调处理。后续还会添加多下载功能....

Java 100.00%

okhttp-okdroid's Introduction

OkDroid

基于okhttp二次封装的网络请求库,支持get请求、post请求、文件上传、文件下载、取消请求,支持Json、Gson、Raw数据类型返回结果回调处理。

效果图

image

参考文献

1.https://github.com/ZhaoKaiQiang/OkHttpPlus
2.https://github.com/hongyangAndroid/okhttputils

简介

在项目app目录下的build.gradle中添加依赖

compile 'com.mph.okdroid:okdroid:1.0.0'

1.在项目于入口创建唯一OkDroid实例

OkDroid okDroid = new OkDroid();
okDroid.setDebug(true);//开启log日志

如果需要配置连接超时时间、cookie等可以通过构造函数方式创建OkDroid:

OkHttpClient okHttpClient = new OkHttpClient.Builder()
                  .connectTimeout(10000L, TimeUnit.MILLISECONDS)
                  .readTimeout(10000L, TimeUnit.MILLISECONDS)
                  .build();
OkDroid okDroid = new OkDroid(okHttpClient);
okDroid.setDebug(true);//开启log日志

2.添加参数方式

a.可以使用addParam单个参数添加也可以使用params多个一起添加;
b.可以使用addHeader单个添加请求头也可以使用headers多个一个添加;

3.结果回调支持

a.Gson 支持,回调传入GsonResHandler<T>
b.Json 支持,回调传入JsonResHandler
c.Raw 支持,回调传入RawResHandler

简单使用

GET + RawResHandler

okDroid.get().url("请求地址")
                .tag(this)
                .enqueue(new RawResHandler() {
                    @Override
                    public void onSuccess(int statusCode, String response) {
                        Log.d(GetActivity.class.getSimpleName(),response);
                    }

                    @Override
                    public void onFailed(int statusCode, String errMsg) {

                    }
                });

POST + JsonResHandler

okDroid.post().url("请求地址")
                .tag(this)
                .addParam("type","1")
                .enqueue(new JsonResHandler() {

                    @Override
                    public void onSuccess(int statusCode, JSONObject response) {
                        if(response!=null){
                            if(!TextUtils.isEmpty(response.toString())){
                                mTvContent.setText(response.toString());
                            }
                        }
                    }

                    @Override
                    public void onFailed(int statusCode, String errMsg) {

                    }
                });

文件上传

Map<String, String> map = new HashMap<>();
        map.put("address", "");
        map.put("gender", "");
        map.put("height", "42");
        map.put("weight", "21");
        map.put("realname", "fsd");
        map.put("waist", "43");
        map.put("userid", "285");
        File file = new File("/sdcard/images/20170308_131947.jpg");
        okDroid.upload().url("请求地址")
                .tag(UploadActivity.this)
                .params(map)
                .addFile("avatarByte", file)
                .enqueue(new JsonResHandler() {

                    @Override
                    public void onProgress(long progress, long total) {
                        Log.d(UploadActivity.class.getSimpleName(), "当前进度-->" + progress + ",总大小-->" + total);
                    }

                    @Override
                    public void onSuccess(int statusCode, JSONObject response) {
                        Log.d(UploadActivity.class.getSimpleName(), response.toString());
                    }

                    @Override
                    public void onFailed(int statusCode, String errMsg) {

                    }
                });

下载文件

okDroid.download().url("http://ivy.pconline.com.cn/click?adid=434690&id=pc.xz.android.zd.tl1.&__uuid=10220796")
                .tag(this)
                .filePath(Environment.getExternalStorageDirectory()+"/okdroid/kyw.apk")
                .enqueue(new IResponseDownloadHandler() {
                    @Override
                    public void onFinish(File downloadFile) {
                        Log.d(DownloadActivity.class.getSimpleName(),"下载成功");
                    }

                    @Override
                    public void onProgress(long progress, long total) {
                        Log.d(DownloadActivity.class.getSimpleName(), "当前进度-->" + progress + ",总大小-->" + total);
                    }

                    @Override
                    public void onFailed(String errMsg) {

                    }

                    @Override
                    public void onCancel() {

                    }
                });

注意:在以上示例中请求设置的tag都为this,所以取消请求方式为:

okDroid.cancel(this);

混淆

#okdroid
-dontwarn com.mph.okdroid.**
-keep class com.mph.okdroid.**{*;}

#okhttp
-dontwarn okhttp3.**
-keep class okhttp3.**{*;}

#okio
-dontwarn okio.**
-keep class okio.**{*;}

About Me

http://ivast.cn

okhttp-okdroid's People

Contributors

hcs-xph avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.