OkHttp

作者: 不会敲代码的好代码 | 来源:发表于2018-07-30 17:48 被阅读9次

    一、 简介

    OkHttp是一个广泛使用的三方库,用于网络请求。okhttp的简单使用,主要包含:

    1. 一般的get请求
    2. 一般的post请求
    3. 基于Http的文件上传
    4. 文件下载
    5. 加载图片
    6. 支持请求回调,直接返回对象、对象集合
    7. 支持session的保持

    使用OKHttp进行网络请求支持两种方式,一种是同步请求,一种是异步请求

    二、 使用

    1. 异步GET请求

    种方式不用再次开启子线程,但回调方法是执行在子线程中,所以在更新UI时还要跳转到UI线程中。

      private void getAsynHttp() {
        mOkHttpClient=new OkHttpClient();
        Request.Builder requestBuilder = new Request.Builder().url("http://www.baidu.com");
        //可以省略,默认是GET请求
        requestBuilder.method("GET",null);
        Request request = requestBuilder.build();
        Call mcall= mOkHttpClient.newCall(request);
        mcall.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
               
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "请求成功", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
    

    2. 同步GET请求

    对于同步请求在请求时需要开启子线程,请求成功后需要跳转到UI线程修改UI。

    ublic void getSyncHttp(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象
                    Request request = new Request.Builder()
                            .url("http://www.baidu.com")//请求接口。如果需要传参拼接到接口后面。
                            .build();//创建Request 对象
                    Response response = null;
                    response = client.newCall(request).execute();//得到Response 对象
                    if (response.isSuccessful()) {
                 
                    //此时的代码执行在子线程,修改UI的操作请使用handler跳转到UI线程。
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
    

    3. 异步POST请求

    Post请求也分同步和异步两种方式,同步与异步的区别和get方法类似,所以此时只讲解post异步请求的使用方法。

    private void postAsynHttp() {
         mOkHttpClient=new OkHttpClient();
         RequestBody formBody = new FormBody.Builder()//创建表单请求体
                 .add("size", "10")
                 .build();
         Request request = new Request.Builder()
                 .url("请求地址")
                 .post(formBody)//传递请求体
                 .build();
         Call call = mOkHttpClient.newCall(request);
         call.enqueue(new Callback() {
             @Override
             public void onFailure(Call call, IOException e) {
             }
             @Override
             public void onResponse(Call call, Response response) throws IOException {
               
                 runOnUiThread(new Runnable() {
                     @Override
                     public void run() {
                         Toast.makeText(getApplicationContext(), "请求成功", Toast.LENGTH_SHORT).show();
                     }
                 });
             }
         });
     }
    

    相关文章

      网友评论

          本文标题:OkHttp

          本文链接:https://www.haomeiwen.com/subject/luifvftx.html