其他分享
首页 > 其他分享> > Volley网络请求

Volley网络请求

作者:互联网

首先写一个MyApp类,继承Application

public class MyApp extends Application {

private static RequestQueue queue;

@Override
public void onCreate() {
    super.onCreate();
    queue = Volley.newRequestQueue(getApplicationContext());
}

public static RequestQueue getHttpQueue(){
    return queue;
}
}

建一个类,开始Volley网络请求

public class VolleyHttp <T>{

//网络判断

public boolean isNetworkConnected(Context context) {
if (context != null) {
    ConnectivityManager mConnectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
    if (mNetworkInfo != null) {
        return mNetworkInfo.isAvailable();
    }
}
return false;
}

//单例

private static VolleyHttp http = new VolleyHttp();

public static synchronized VolleyHttp getInstance(){
    if (http == null){
        http = new VolleyHttp();
    }
    return http;
}

下面开始写请求方式:

private CallBack mcallBack;

//Get请求方式

public void volleyGet(String url , final Class<T> tClass , final CallBack callBack){
    this.mcallBack = callBack;
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Message message = Message.obtain();
            message.what = 1;
            Gson gson = new Gson();
            T t = gson.fromJson(response, tClass);
            message.obj = t;
            handler.sendMessage(message);
        }
    }, new Response.ErrorListener() {
        @Override
        public void one rrorResponse(VolleyError error) {
            Message message = Message.obtain();
            message.what = 0;
            message.obj = error.getMessage();
            handler.sendMessage(message);
        }
    });
    stringRequest.setTag("get");
    MyApp.getHttpQueue().add(stringRequest);
}

//Post请求方式

public void volleyPost(String url , final Class<T> tClass , final HashMap<String , String> hashMap, final CallBack callBack){
    this.mcallBack = callBack;
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Message message = Message.obtain();
            message.what = 1;
            Gson gson = new Gson();
            T t = gson.fromJson(response, tClass);
            message.obj = t;
            handler.sendMessage(message);
        }
    }, new Response.ErrorListener() {
        @Override
        public void one rrorResponse(VolleyError error) {
            Message message = Message.obtain();
            message.what = 0;
            message.obj = error.getMessage();
            handler.sendMessage(message);
        }
    }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            return hashMap;
        }
    };
    stringRequest.setTag("post");
    MyApp.getHttpQueue().add(stringRequest);
}

//Handler

Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case 1:
                T t = (T) msg.obj;
                mcallBack.onSuccess(t);
                break;
            case 0:
                String err = (String) msg.obj;
                mcallBack.onFail(err);
                break;
        }
    }
};

//成功and失败的接口

public interface CallBack<D>{
    void onSuccess(D d);
    void onFail(String error);
}

标签:请求,Message,void,网络,new,Volley,message,public,String
来源: https://blog.csdn.net/a506656675/article/details/89437991