marclee44 / me

1 stars 0 forks source link

第三方插件OKHttp之基本应用 #4

Open marclee44 opened 3 years ago

marclee44 commented 3 years ago

简介

OKHttp是Android平台上比较主流的一个高效HTTP客户端,其默认启用以下几个特性:

引用

    implementation "com.squareup.okhttp3:okhttp:4.9.0"

当前稳定版本是4.9.0,你也可以去官网查看最新版本。另外不要忘了在清单文件声明访问Internet的权限,如果使用DiskLruCache,那还得声明写外存的权限。

基本使用方法

特别需要注意的是

以下简单示例 同步GET请求

String url = Application.getString(R.string.url);
OkHttpClient okHttpClient = new OkHttpClient();
final Request request = new Request.Builder()
        .url(url)
        .get()  //默认就是GET请求,可以不写
        .build();
final Call call = okHttpClient.newCall(request);
new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            Response response = call.execute();
            Headers headers = response.headers();
            String body = response.body().string());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}).start();

异步POST请求

String url = Application.getString(R.string.url);
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
        .url(url)
        .post(requestbody)  //requestbody可以是String、流、文件等
        .build();
okHttpClient.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        e.printStackTrace();
    }

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

总体来说,作为HTTP客户端使用还是很方便的。至于其 拦截器-interceptor 功能,还没用过,之后再研究