Vollet 不是android自带的框架 需要添加第三方的依赖
注重
implementation 'com.mcxiaoke.volley:library:1.0.19' //Volley框架 依赖
1, 单例 + 请求队列 -- 同步锁
2, get请求 -- 参数2个 -- 请求地址 , 请求成功的回调监听器 -- StringRequest
3, post请求 -- 参数3个 -- 请求地址, 请求参数, 请求成功的回调监听器 -- JsonObjectRequest
4, 网络连接判断
封装Volley 使用单例模式
以下单独创建的类 来请求数据
public class HttpUtils {
private static RequestQueue requestQueue=null;
请求 队列
单例模式
private static HttpUtils httpUtils=null;
private HttpUtils(){};
public static HttpUtils getHttpUtils(Context context){
if (httpUtils==null){
synchronized (HttpUtils.class){ 安全锁
if (httpUtils==null){
requestQueue= Volley.newRequestQueue(context);
httpUtils=new HttpUtils();
}
}
}
return httpUtils;
}
//GET请求的方法
public void get(String path,Response.Listener listener){
//4, 创建请求
StringRequest request = new StringRequest(path, listener, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG","获取数据失败!!!!");
}
});
//TODO 5, 请求加入请求队列
requestQueue.add(request);
}
//POST请求的方法
public void psot(String path,JSONObject params,Response.Listener listener){
JsonObjectRequest request=new JsonObjectRequest(Request.Method.POST, path, params, listener, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("数据获取失败");
}
});
// 请求加入请求队列
requestQueue.add(request);
}
}
以下是在网络数据请求的方法
POST
public void Http_user(View view) {
//使用 map进行封装
Map map =new HashMap();
map.put("(对应字段)","(数据)");
map.put("(对应字段)","(数据)");
JSONObject jsonObject = new JSONObject(map);
HttpUtils.getHttpUtils(MainActivity.this).psot("(网络连接)", jsonObject, new Response.Listener() {
@Override
public void onResponse(Object response) {
// 获取到的值
JSONObject json= (JSONObject) response;
String message = json.optString("message");
Toast.makeText(MainActivity.this, ""+message, Toast.LENGTH_SHORT).show();
}
});
}
GET
HttpUtils.getHttpUtils(MainActivity.this).get("(网络连接) ", new Response.Listener() { @Override public void onResponse(Object response) { String json = (String) response; textView.setText(json); } }); } });