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的請求方式是更加安全的!
在這裏插入圖片描述
如果你覺得本文還不算太差,就點個贊吧!
在這裏插入圖片描述

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