Android使用okHttp(get方式)下載圖片
一、首先下載Jar包
https://github.com/square/okhttp
如果使用android studio只需要加入依賴compile 'com.squareup.okhttp3:okhttp:3.2.0'
二、下載一張圖片并顯示
使用的是hanlder的方式
package com.liunan.okhttpdemo2; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import java.io.IOException; import java.io.InputStream; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; public class MainActivity extends AppCompatActivity { private static final int ERROR = 1; private static final int SUCCESS = 2 ; private String url = "http://192.168.1.102:8080/img/a.jpg"; private ImageView mIv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case SUCCESS: mIv.setImageBitmap((Bitmap) msg.obj); break; case ERROR: Toast.makeText(MainActivity.this, "請求超時", Toast.LENGTH_SHORT).show(); break; } } }; /** * 初始化 組件 */ private void initView() { mIv = (ImageView) findViewById(R.id.main_iv); } /** * 點擊獲取圖片 */ public void getPic(View v){ new Thread(){ @Override public void run() { //獲取okHttp對象get請求, try { OkHttpClient client = new OkHttpClient(); //獲取請求對象 Request request = new Request.Builder().url(url).build(); //獲取響應(yīng)體 ResponseBody body = client.newCall(request).execute().body(); //獲取流 InputStream in = body.byteStream(); //轉(zhuǎn)化為bitmap Bitmap bitmap = BitmapFactory.decodeStream(in); //使用Hanlder發(fā)送消息 Message msg = Message.obtain(); msg.what = SUCCESS; msg.obj = bitmap; handler.sendMessage(msg); } catch (IOException e) { e.printStackTrace(); //失敗 Message msg = Message.obtain(); msg.what = ERROR; handler.sendMessage(msg); } } }.start(); } }
也可以把網(wǎng)絡(luò)請求寫為一個工具類,
package com.liunan.okhttpdemo2; import java.io.IOException; import java.io.InputStream; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by 劉楠 on 2016-03-27. */ public class OkHttpUtils { OkHttpClient client = new OkHttpClient(); /** * 獲取流 * @param url 請求地址 * @return 輸入流 */ public InputStream getInpuStream(String url) throws IOException { //設(shè)置 請求 Request request = new Request.Builder() .url(url).build(); //獲取行響應(yīng) InputStream in = client.newCall(request).execute().body().byteStream(); return in; } /** * 返回字符串 * @param url * @return 返回字符串 * @throws IOException */ public String getString(String url) throws IOException { //設(shè)置 請求 Request request = new Request.Builder() .url(url).build(); //獲取行響應(yīng) Response response = client.newCall(request).execute(); return response.body().string(); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中 webView調(diào)用JS出錯的解決辦法
這篇文章主要介紹了Android中 webView調(diào)用JS出錯的解決辦法,需要的朋友可以參考下2015-01-01Android中的Notification機(jī)制深入理解
這篇文章主要給大家介紹了關(guān)于Android中Notification機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02android開發(fā)中常用的Eclipse快捷鍵詳細(xì)整理
android開發(fā)中常用的Eclipse快捷鍵詳細(xì)整理方便查找,需要的朋友可以了解下2012-12-12Flutter開發(fā)之Widget自定義總結(jié)
這篇文章主要給大家介紹了關(guān)于Flutter開發(fā)中Widget自定義的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Android利用WindowManager生成懸浮按鈕及懸浮菜單
這篇文章主要為大家詳細(xì)介紹了Android利用WindowManager生成懸浮按鈕及懸浮菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01Android編程中FileOutputStream與openFileOutput()的區(qū)別分析
這篇文章主要介紹了Android編程中FileOutputStream與openFileOutput()的區(qū)別,結(jié)合實例形式分析了FileOutputStream與openFileOutput()的功能,使用技巧與用法區(qū)別,需要的朋友可以參考下2016-02-02