• Android 开源框架 ( 二 ) 基于OkHttp进一步封装的okhttp-utils介绍


      okhttp-utils是张鸿洋是基于OkHttp封装的框架库。实际工作中,使用的不多,对于小型项目的网络请求和文件传输可以考虑直接使用。否则还是基于主流的OkHttp+Retrift+RxJava框架。

      对于OkHttp使用,可以自己根据自己项目需要,做一些封装。如果应付手头临时项目,可以借鉴GitHub上一些开源OkHttp封装库.只要去GitHub上搜索下OkHttp 会出来很多封装的框架。

      分析okhttp-utils使用,只是用于自己学习了解。

    一.将okhttp-utils当做module引入项目中

        

    二.okhttp-utils引入到项目中文件列表目录:

            

    三.okhttp-utils 基本使用

      1. //get 请求数据

    OkHttpUtils
            .get()
            .url(url)
            .id(100)
            .build()
            .execute(new MyStringCallback());

      2.//post 请求数据

    OkHttpUtils
            .postString()
            .url(url)
            .mediaType(MediaType.parse("application/json; charset=utf-8"))
            .content(new Gson().toJson(new User("zhy", "123")))
            .build()
            .execute(new MyStringCallback());        

      3.//上传文件

    OkHttpUtils
            .postFile()
            .url(url)
            .file(file)
            .build()
            .execute(new MyStringCallback());

      4.//加载图片

    OkHttpUtils
            .get()
            .url(url)
            .tag(this)
            .build()
            .connTimeOut(20000)
            .readTimeOut(20000)
            .writeTimeOut(20000)
            .execute(new BitmapCallback()
            {
                @Override
                public void onError(Call call, Exception e, int id)
                {
                    mTv.setText("onError:" + e.getMessage());
                }
    
                @Override
                public void onResponse(Bitmap bitmap, int id)
                {
                    Log.e("TAG", "onResponse:complete");
                    mImageView.setImageBitmap(bitmap);
                }
            });    

      5.//上传单个文件

    OkHttpUtils.post()//
            .addFile("mFile", "messenger_01.png", file)
            .url(url)
            .params(params)//带表单数据
            .headers(headers)
            .build()
            .execute(new MyStringCallback());    

      6.//上传多个文件

    OkHttpUtils.post()
            .addFile("mFile", "messenger_01.png", file)
            .addFile("mFile", "test1.txt", file2)
            .url(url)
            .params(params)//带表单数据
            .build()
            .execute(new MyStringCallback());    

      7.//下载文件

    OkHttpUtils
            .get()
            .url(url)
            .build()
            .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "gson-2.2.1.jar")
            {
    
                @Override
                public void onBefore(Request request, int id)
                {
                }
    
                @Override
                public void inProgress(float progress, long total, int id)
                {
                    //进度条显示
                    mProgressBar.setProgress((int) (100 * progress));
                    Log.e(TAG, "inProgress :" + (int) (100 * progress));
                }
    
                @Override
                public void onError(Call call, Exception e, int id)
                {
                    Log.e(TAG, "onError :" + e.getMessage());
                }
    
                @Override
                public void onResponse(File file, int id)
                {
                    Log.e(TAG, "onResponse :" + file.getAbsolutePath());
                }
            });    

      定义的公共回调方法:

    public class MyStringCallback extends StringCallback
        {
            @Override
            public void onBefore(Request request, int id)
            {
            }
    
            @Override
            public void onAfter(int id)
            {
            }
    
            @Override
            public void onError(Call call, Exception e, int id)
            {
                e.printStackTrace();
            }
    
            @Override
            public void onResponse(String response, int id)
            {
                Log.e(TAG, "onResponse:complete");
                mTv.setText("onResponse:" + response);
    
                switch (id)
                {
                    case 100:
                        Toast.makeText(MainActivity.this, "http", Toast.LENGTH_SHORT).show();
                        break;
                    case 101:
                        Toast.makeText(MainActivity.this, "https", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
    
            @Override
            public void inProgress(float progress, long total, int id)
            {
                Log.e(TAG, "inProgress:" + progress);
                mProgressBar.setProgress((int) (100 * progress));
            }
        }        
  • 相关阅读:
    TStringList 常用操作(转自南山古陶)
    在Delphi中使用Indy控件实现邮件群发
    GSM手机SMS编码解码
    建别人进不了删不掉的文件夹
    播放 wav 文件
    delphi inherited,纯虚
    PDU编码规则
    sql函数
    基于GPRS的LED电子显示屏
    结对编程 队友代码分析
  • 原文地址:https://www.cnblogs.com/bugzone/p/okhttp-utils.html
Copyright © 2020-2023  润新知