OKHttp框架使用

1.添加依賴

implementation("com.squareup.okhttp3:okhttp:4.3.1")

2.異步GET請求

-new OkHttpClient;
-構造Request對象;
-通過前兩步中的對象構建Call對象;
-通過Call#enqueue(Callback)方法來提交異步請求;

OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .connectTimeout(3,TimeUnit.SECONDS)
                    .writeTimeout(3,TimeUnit.SECONDS)
                    .readTimeout(3,TimeUnit.SECONDS)
                    .build();
            final Request request = new Request.Builder()
                    .url(Constants.GET_CURRENT_ANDROID_APP_VERSION_URL + url)
                    .build();
            Call call = okHttpClient.newCall(request);
            call.enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {

                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String s = response.body().string();
                    CheckAppVersionProtocol checkAppVersionProtocol =
                            GsonUtils.paserJsonToBean(s,CheckAppVersionProtocol.class);
                    Message msg = new Message();
                    msg.obj = checkAppVersionProtocol;
                    msg.what = 2;
                    handler.sendMessage(msg);
                }
            }

3.異步POST請求提交String

MediaType mediaType = MediaType.parse("text/x-markdown; charset=utf-8");
String requestBody = "Hello lzy.";
Request request = new Request.Builder()
        .url("...")
        .post(RequestBody.create(mediaType, requestBody))
        .build();
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        Log.d(TAG, "onFailure: " + e.getMessage());
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        Log.d(TAG, response.protocol() + " " +response.code() + " " + response.message());
        Headers headers = response.headers();
        for (int i = 0; i < headers.size(); i++) {
            Log.d(TAG, headers.name(i) + ":" + headers.value(i));
        }
        Log.d(TAG, "onResponse: " + response.body().string());
    }
});

3.POST方式提交表單(常見)

OkHttpClient okHttpClient = new OkHttpClient
                                .Builder()
                                .connectTimeout(5,TimeUnit.SECONDS)
                                .readTimeout(5,TimeUnit.SECONDS)
                                .writeTimeout(5,TimeUnit.SECONDS)
                                .build();
                        RequestBody requestBody = new FormBody
                                .Builder()
                                .add("username",username)
                                .add("password",password)
                                .add("ipaddress",ip)
                                .build();
                        Request requestPost = new Request.Builder()
                                .url(Constants.BASE_LOGIN_URL + "appid=" + Constants.APP_ID
                                + "&encrypt=" + encrypt)
                                .post(requestBody)
                                .build();
                        okHttpClient.newCall(requestPost).enqueue(new Callback() {
                            @Override
                            public void onFailure(Call call, IOException e) {
                                Utils.runOnUIThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        loadingProgress.dismiss();
                                        Toast.makeText(LoginActivity.this,
Constants.CONNECTION_TIMEOUT,Toast.LENGTH_SHORT).show();
                                    }
                                });
                            }

                            @Override
                            public void onResponse(Call call, Response response) throws IOException {
                                String s = response.body().string();
                                LoginResponse loginResponse = GsonUtils.paserJsonToBean(s,LoginResponse.class);
                                Message msg = new Message();
                                msg.obj = loginResponse;
                                msg.what = 1;
                                handler.sendMessage(msg);
                            }
                        });
                    }

 

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