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 onErrorResponse(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 onErrorResponse(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);
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值