OkHttp面試之--使用OkHttp非同步請求網路資料
阿新 • • 發佈:2019-01-05
對於OkHttp的使用,就不多廢話了,直接上程式碼
新增依賴,build.gradle檔案中新增如下依賴
compile 'com.squareup.okhttp3:okhttp:3.2.0'
接下來在Activity中新增如下程式碼
//首先建立一個Handler
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
imageView.setImageBitmap((Bitmap) msg.obj);
break ;
}
}
};
//然後使用OkHttp傳送網路請求,並將結果通過Handler傳送到主執行緒
public void sendRequestByOkHttp() {
//建立Request物件,並傳入請求地址
Request request = new Request.Builder().url( "http://tnfs.tngou.net/img/ext/160321/e57d5816cb72d7486aa6dbf19a7d0c6c.jpg").build();
//構造Call物件--其實是AsyncCall物件
Call call = client.newCall(request);
//呼叫Call.enqueue方法進行非同步請求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//網路請求失敗
Log.d("lenve", "onFailure: " + e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//網路請求成功,將請求的圖片資訊顯示的ImageView控制元件上
Bitmap bitmap = BitmapFactory.decodeStream( response.body().byteStream());
Message msg = mHandler.obtainMessage();
msg.what = 1;
msg.obj = bitmap;
mHandler.sendMessage(msg);
}
});
}
使用很簡單,就不作過多的解釋了。有不明白的私聊