OkHttp
を使用する場合、ネットワーク要求は、次のコードで1
又は2
に実行されます。okhttp - 実行()体対()バイトストリーム
val response = client.newCall(request).execute() // (1)
if (response.isSuccessful) {
val bs = response.body().byteStream() // (2)
val bitmap = BitmapFactory.decodeStream(bs)
} else { ... }
私はいつも私はここで、(1)
で実行されたと考えられ応答が成功したかどうか尋ねるのが理にかなっています。しかし、今日は、this official recipeを実装して、ダウンロード中のファイルの進行状況を追跡することにしました。
次に、私が行(response.body().byteStream()
)を削除すると、進捗カウンタがまったく動かないことに気付きました。理論的には、このシナリオではsuccess
が意味すること以外は何もダウンロードしていません。
これは疑問ですが、私はここで紛失しているネットワーキングについて非常に基本的なことがあると思います。詳細を知りたいと思います。 Okio
ライブラリのソースコードを理解しようとしましたが、私にとってはあまりにも複雑すぎます。参考文献や指針が必要です。
ありがとう@Jesse!それは多くの意味があります。 2つのフォローアップの質問、私はストリームを閉じるか、okhttpは私のためにそれをする必要がありますか?そして、この主題についてもっと知るためには、どのようなリソースをお勧めしますか?もう一度ありがとう – feresr
はい、常に応答の本文を閉じます。最適なリソースは、OkHttp wikiとHTTP仕様です。 –