1.2 okhttp入門
11990 ワード
一.概要
OkHttpは高効率なHTTPクライアントであり、HTTP/2をサポートして、同じホストアドレスのすべての要求を共有することができます。同じsocket接続接続プールに接続してください。遅延を要求することができます。透明なGZIP圧縮は応答データのサイズを減らします。これは自動的に一般的な接続問題を回復します。もしあなたのサービスに複数のIPアドレスがあったら、最初のIP要求が失敗したら、OkHttpは他のIPを交互に試してみます。OkHttpは現代のTLS技術(SNI、ALPN)を使って新しい接続を初期化します。握手が失敗したらTLS 1.0に戻ります。ノート:OkHttpはAndroid 2.3及び以上のAndroidプラットフォームをサポートしています。Java、JDK 1.7及び以上に対応しています。
二.使用
OkHttpの使用は非常に簡単であり、その要求/応答APIは、ブロックされた同期要求と帯域バックの非同期要求をサポートするビルダーモードbuildersを使用して設計される。公式サイト:https://github.com/square/okhttp
依存度を追加:
-new OkHttp Client;-Requestオブジェクトを作成します。-2ステップ前のオブジェクトからCallオブジェクトを構築します。−Call call enqueue(Callback)方法により非同期要求を提出する。
同期;閉塞式では、現在のスレッドで論理的に非同期を実行します。現在のスレッドでは、スレッド実行ロジックを新規作成し、タイムロスタスクロジックに適合します。
OkHttpは高効率なHTTPクライアントであり、HTTP/2をサポートして、同じホストアドレスのすべての要求を共有することができます。同じsocket接続接続プールに接続してください。遅延を要求することができます。透明なGZIP圧縮は応答データのサイズを減らします。これは自動的に一般的な接続問題を回復します。もしあなたのサービスに複数のIPアドレスがあったら、最初のIP要求が失敗したら、OkHttpは他のIPを交互に試してみます。OkHttpは現代のTLS技術(SNI、ALPN)を使って新しい接続を初期化します。握手が失敗したらTLS 1.0に戻ります。ノート:OkHttpはAndroid 2.3及び以上のAndroidプラットフォームをサポートしています。Java、JDK 1.7及び以上に対応しています。
二.使用
OkHttpの使用は非常に簡単であり、その要求/応答APIは、ブロックされた同期要求と帯域バックの非同期要求をサポートするビルダーモードbuildersを使用して設計される。公式サイト:https://github.com/square/okhttp
依存度を追加:
compile 'com.squareup.okhttp3:okhttp:3.11.0'
2.1 GET要求-new OkHttp Client;-Requestオブジェクトを作成します。-2ステップ前のオブジェクトからCallオブジェクトを構築します。−Call call enqueue(Callback)方法により非同期要求を提出する。
String url = "http://wwww.baidu.com";
OkHttpClient okHttpClient = new OkHttpClient();
final Request request = new Request.Builder()
.url(url)
.get()// GET ,
.build();
Call call = okHttpClient.newCall(request);
2.2 POST要求OkHttpClient okHttpClient = new OkHttpClient(); // client
FormBody formBody = new FormBody.Builder() // form
.add("name","lisi")
.build();
Request request = new Request.Builder()
.post(formBody)
.url(food_url).build(); //
Call call = okHttpClient.newCall(request);
....
2.3同期と非同期同期;閉塞式では、現在のスレッドで論理的に非同期を実行します。現在のスレッドでは、スレッド実行ロジックを新規作成し、タイムロスタスクロジックに適合します。
// ,
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d(TAG, "onFailure: ");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
}
//同期方法を取調し、対象に戻ります。Response execute = call.execute();
2.4 okhttpキャッシュ追加long maxSize = 1024 * 1024 * 4; // 4Mb
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.cache(new Cache(getCacheDir(), maxSize))//
.build();
Request request = new Request.Builder().url("http://gank.io/api/data/%E7%A6%8F%E5%88%A9/20/1").build();
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, "onResponse: " + response.body().string());
}
});