1. 程式人生 > >Android中鴻洋封裝的OkHttp框架詳解

Android中鴻洋封裝的OkHttp框架詳解

1下載並依賴jar包

OKhttp官網:

在這裡下載okhttputils-2_6_2.jar

2加許可權

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

3具體請求

3.1get請求示例

 private void httpGet() {
        String url = "http://api.icaipiao123.com/api/v7/social/hotlist?count=10&lottery_key=shuangseqiu&page=1 ";
        OkHttpUtils
                .get()
                .url(url)
                .build()
                .execute(new StringCallback() {
                    @Override
                    public void onError(Call call, Exception e, int i) {
                    }

                    @Override
                    public void onResponse(String s, int i) {
                        Log.e("111", ">>>>>" + s);
                    }
                });
    }
3.2post請求示例
/**
     *  測試post請求
     */
    private void httpPost() {
        String url = "http://www.csdn.net/";
        OkHttpUtils
                .post()
                .url(url)
                .addParams("username", "hyman")
                .addParams("password", "123")
                .build()
                .execute(new StringCallback() {
                    @Override
                    public void onError(Call call, Exception e, int i) {

                    }

                    @Override
                    public void onResponse(String s, int i) {
                        Log.e("111", ">>>>>" + s);
                    }
                });
    }
3.3檔案下載示例
 /**
     * 檔案下載,是可以下載大檔案的,像視訊,音樂等,
     * 這裡下載圖片,只是示範一下
     */
    private  void httpDownFile(){
        String url="http://p.zhangkongshidai.cn/20180425/7bc14bddf464c097af89d9c93536cd5e.jpeg";
        OkHttpUtils
                .get()
                .url(url)
                .build()
                .execute(
                        new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "zhh.jpeg") {
                            @Override
                            public void inProgress(float progress, long total, int id) {
//                                mProgressBar.setProgress((int) (100 * progress));
                            }

                            @Override
                            public void onError(Call call, Exception e, int i) {
                                Log.e("111", "onError :" + e.getMessage());
                            }

                            @Override
                            public void onResponse(File file, int i) {
//                              檔案儲存的路徑,在根目錄下
                                Log.e("111", "onResponse :" + file.getAbsolutePath());
                            }
                        });
    }
3.4多檔案上傳
/**
     *
     * 多檔案上傳
     */
    private void httpUpdata(){
        File file = new File(Environment.getExternalStorageDirectory(),"zhh.png");
        if(!file.exists()) {
            Toast.makeText(MainActivity.this, "檔案不存在", Toast.LENGTH_SHORT).show();
            return;
        }
        Map<String,String>params = new HashMap<>();
        params.put("username","zhh");
        String url="";
        OkHttpUtils.post()
                .addFile("file","test.jpg",file)
                .url(url)
                .params(params)
                .build()
                .execute(new StringCallback() {
                    @Override
                    public void onBefore(Request request, int id) {
                        super.onBefore(request, id);
                    }

                    @Override
                    public void onAfter(int id) {
                        super.onAfter(id);
                    }

                    @Override
                    public void inProgress(float progress, long total, int id) {
                        super.inProgress(progress, total, id);
                        //  mProgressBar.setProgress((int) (100 * progress));
                    }

                    @Override
                    public void onError(Call call, Exception e, int i) {

                    }

                    @Override
                    public void onResponse(String s, int i) {

                    }
                });
    }
3.5請求單張圖片
/**
     * 請求單張圖片
     * 圖片不建議用okhttp
     * 用glide
     */
    private void httpOnlyImage(){
        String url = "http://pic.58pic.com/58pic/15/36/00/73b58PICgvY_1024.jpg";
        OkHttpUtils.get()
                   .url(url)
                   .build()
                   .execute(new BitmapCallback() {
                       @Override
                       public void onError(Call call, Exception e, int i) {
                          Log.e("111",""+e.getMessage());
                       }

                       @Override
                       public void onResponse(Bitmap bitmap, int i) {
                           ivImage.setImageBitmap(bitmap);
                       }
                   });

    }
原始碼下載:

https://download.csdn.net/download/zhaihaohao1/10375418