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