概述
- 源碼基于 OkHttp-3.14.6
依賴
- 在
build.gradle
中添加以下代碼implementation 'com.squareup.okhttp3:okhttp:3.14.6'
網(wǎng)絡(luò)請(qǐng)求
- 初始化
OkHttpClient
- 構(gòu)建
OkHttpClient
有兩種方式:OkHttpClient
和OkHttpClient.Builder
五芝; -
OkHttpClient
- 使用
OkHttpClient
只能調(diào)用默認(rèn)構(gòu)造函數(shù)邮利,配置項(xiàng)都是默認(rèn)的;
- 使用
-
OkHttpClient.Builder
OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS) .writeTimeout(5, TimeUnit.SECONDS) .callTimeout(10, TimeUnit.SECONDS) .followRedirects(true) .followSslRedirects(true) .addInterceptor(null) .cache(null) .cookieJar(null) .protocols(null) .authenticator(null) .dns(null) .proxy(null) .certificatePinner(null) .connectionPool(null) .connectionSpecs(null) .dispatcher(null) .eventListener(null) .build();
- 使用
OkHttpClient.Builder
可以配置各種參數(shù)夜畴,比如超時(shí)债蓝,代理壳鹤,緩存,證書饰迹,連接池芳誓,重定向,攔截器等等啊鸭; - 還可以通過
OkHttpClient#newBuilder
生成一個(gè)Builder
在修改相關(guān)配置锹淌,最終生成另一個(gè)OkHttpClient
,但是有些是公用的赠制,比如連接池和線程池赂摆;
- 使用
- 構(gòu)建
- 創(chuàng)建
Call
對(duì)象Request request = new Request.Builder() .url("https://www.baidu.com") .build(); Call call = client.newCall(request);
-
Request
包括請(qǐng)求需要的所有參數(shù),包括 url钟些,請(qǐng)求方法烟号,header,body政恍; -
Call
表示一次網(wǎng)絡(luò)請(qǐng)求汪拥,包括一對(duì)Request
Response
;只能請(qǐng)求一次篙耗;
-
- 發(fā)起請(qǐng)求
call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { } }); try { Response response = call.execute(); } catch (IOException e) { e.printStackTrace(); }
- 支持同步和異步請(qǐng)求迫筑;