Okhttp 3の一般的な方法と簡単な使用
3562 ワード
多いのは紹介しないで、直接本題に入ります
依存関係:
注意すべき点
一、結果が返されたスレッドがメインスレッドではない
二、成功後の結果はResponseオブジェクトresponseを使用する必要がある.body().string().注意:response.body()はnullかもしれません注意が必要です
1.getリクエストの同期:
2.非同期getリクエスト:
3.非同期postリクエスト:
4.タイムアウトの設定:
5.印刷要求のログ
使用方法:
印刷内容をカスタマイズすることもできます.
絶えず進歩する.
依存関係:
//OkHttp3
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'
// okHttp3
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
注意すべき点
一、結果が返されたスレッドがメインスレッドではない
二、成功後の結果はResponseオブジェクトresponseを使用する必要がある.body().string().注意:response.body()はnullかもしれません注意が必要です
1.getリクエストの同期:
public String getExecuteHttp() throws IOException {
//1. OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url("http://www.baidu.com")
.build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
2.非同期getリクエスト:
public void getEnqueueHttp() {
//1. OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
// .get() , , get
// .method("GET",null)
.url("http://www.baidu.com")
.build();
okHttpClient.newCall(request)
.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("onFailure", "onFailure");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d("onResponse", "onResponse" + response.body().string());
}
});
}
3.非同期postリクエスト:
public void postHttp() {
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody requestBody = new FormBody.Builder()
.add("page", "1")
.add("count", "10")
.build();
Request request = new Request.Builder()
.url("http://www.duans.top/freeApi/api.php?act=getJoke")
.post(requestBody)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("onFailure", "onFailure");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d("onResponse", "onResponse" + response.body().string());
}
});
}
4.タイムアウトの設定:
//1. OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient.Builder()
// ,
.retryOnConnectionFailure(true)
// ,
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build();
5.印刷要求のログ
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
// BODY ,
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
使用方法:
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.build();
印刷内容をカスタマイズすることもできます.
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
Log.e("okHttp->", message);
}
});
絶えず進歩する.