1. 程式人生 > >工具類封裝獲取網路資料+網路圖片的方法

工具類封裝獲取網路資料+網路圖片的方法

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;
    }
}