工具類封裝獲取網路資料+網路圖片的方法
阿新 • • 發佈:2018-11-10
package com.bwie.renzhili; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class NetUtils { //介面 public interface getRequeryCallBack<T>{ void getRequery(T object); } //網路資料介面回撥的方法 public static void getRequery(String url, final Class clazz, final getRequeryCallBack getRequeryCallBack){ new AsyncTask<String,Void,Object>(){ @Override protected Object doInBackground(String... strings) { return getGsondata(strings[0],clazz); } @Override protected void onPostExecute(Object o) { getRequeryCallBack.getRequery(o); } }.execute(url); } //解析資料的方法 public static <E> E getGsondata(String url,Class clazz){ String requery = getRequery(url); E e = (E) new Gson().fromJson(requery, clazz); return e; } //網路請求的方法 public static String getRequery(String url){ try { URL url1 = new URL(url); HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); int responseCode = urlConnection.getResponseCode(); if (responseCode==200){ String s = getstrarm2string(urlConnection.getInputStream()); return s; } } catch (Exception e) { e.printStackTrace(); } return null; } //位元組流轉換成字元流的方法 private static String getstrarm2string(InputStream inputStream) throws IOException { StringBuilder builder = new StringBuilder(); //建立字元緩衝流 BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); //讀取字元流 for (String tmp = br.readLine();tmp!=null;tmp=br.readLine()){ builder.append(tmp); } return builder.toString(); } //定義介面 public interface CallBack{ void setloadimage(String url,Bitmap bitmap); } //獲取網路圖片介面回撥的方法 public static void getloadimage(final String url, final CallBack callBack){ AsyncTask<String,Void,Bitmap> asyncTask = new AsyncTask<String, Void, Bitmap>() { @Override protected Bitmap doInBackground(String... strings) { return loadimage(strings[0]); } @Override protected void onPostExecute(Bitmap bitmap) { //介面回撥 callBack.setloadimage(url,bitmap); //imageView.setImageBitmap(bitmap); } }.execute(url); } //請求網路圖片的方法 public static Bitmap loadimage(String urlimage){ try { //建立URL URL url1 = new URL(urlimage); //開啟連結 HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection(); //設定訪問方式 urlConnection.setRequestMethod("GET"); //設定超時 urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); //返回響應碼 int responseCode = urlConnection.getResponseCode(); //判斷響應是否成功 if (responseCode==200){ //將網路路徑轉換成存入bitmap Bitmap bitmap = BitmapFactory.decodeStream(urlConnection.getInputStream()); return bitmap; } } catch (Exception e) { e.printStackTrace(); } return null; } }