OkHttp的详细使用方法

OkHttp简介

OkHttp是由Square公司开发的,除了OkHttp 之外,还开发了 Picasso、Retrofit等著名的开源项目,现在已经成了广大Android开发者首选的网络通信库。OkHttp地址是:https://github.com/square/okhttp。

添加依赖

//OkHttp(网络请求框架)
implementation 'com.squareup.okhttp3:okhttp:3.4.1'

同步请求

GET

想要发送一个请求呢,这两个对象是不可少的,当然这里还只是一个空的请求

// 实例化OkHttpClient对象
OkHttpClient client = new OkHttpClient();
// 实例化Request对象(空)
Request request=new Request.Builder().build();

我们先来加上一个目标地址

// 实例化Request对象(空)
        Request request=new Request.Builder()
                .url("www.baidu.com")
                .build();

发送请求,获得数据,由于这里有IO操作,所以try catch一下

try {
            // Response对象存储的就是获取的数据
            Response response=client.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }

然后将上面Reeponse得到的数据转化成具体内容

String data = response.body().string();
POST

POST请求的话和GET请求差不多,就多了个RequestBody对象,用来携带传入的参数

//实例化RequestBody对象
RequestBody requestBody=new FormBody.Builder()
                .add("","")
                .build();

然后在Request中调用.post()方法,传入RequestBody

// 实例化Request对象
        Request request = new Request.Builder()
                .url("www.baidu.com")
                .post(requestBody)
                .build();

其他和GET方式完全一样,如下

// 实例化OkHttpClient对象
        OkHttpClient client = new OkHttpClient();
        //实例化RequestBody对象
        RequestBody requestBody = new FormBody.Builder()
                .add("", "")
                .build();
        // 实例化Request对象
        Request request = new Request.Builder()
                .url("www.baidu.com")
                .post(requestBody)
                .build();
        try {
            // Response对象存储的就是获取的数据
            Response response = client.newCall(request).execute();
            String data = response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }

异步请求

异步请求和同步请求的区别就是:发送请求那一块,同步请求是Response response = client.newCall(request).execute();,而异步请求是:client.newCall(request).enqueue(new Callback());

GET
OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url("www.baidu.com")
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String responseData = response.body().string();
                setUI(responseData);
            }
        });
POST
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new FormBody.Builder()
                .add("", "")
                .build();
        Request request = new Request.Builder()
                .url("www.baidu.com")
                .post(requestBody)
                .build();
client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String responseData = response.body().string();
                setUI(responseData);
            }
        });

相信很多小伙伴有一个疑问,同步请求、异步请求、GET、POST我都会了,那我他们的区别是什么呢?

同步请求、异步请求区别

用简单通俗一点的语言说一下:

同步请求:同步请求是发送请求后,只能等服务器处理完这个请求,才能去干别的

异步请求:异步请求是发送请求后,服务器会在一边处理请求,中途可以去干别的

优劣:异步请求的优势很明显,所以开发中能用异步请求就用异步请求

GET、POST请求方式区别

这是来自W3school的表格,可以看到最后一栏,GET方式会暴露数据,而POST不会,所以显而易见,POST的请求方式是更加安全的!
在这里插入图片描述
如果你觉得本文还不算太差,就点个赞吧!
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章