Android中鸿洋封装的OkHttp框架详解

1下载并依赖jar包

OKhttp官网:

http://square.github.io/okhttp/
在官网中下载
okhttp-3.10.0.jar
okio-1.14.0.jar
这两个包是okhttp用的基础包,是必须使用的。

OkHttp鸿阳的封装
https://github.com/hongyangAndroid/okhttputils

在这里下载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);
                       }
                   });

    }
源码下载:













猜你喜欢

转载自blog.csdn.net/zhaihaohao1/article/details/80090754
今日推荐