工具类封装获取网络数据+网络图片的方法

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

猜你喜欢

转载自blog.csdn.net/ren18234073466/article/details/83787041