1.引入:
implementation 'com.mcxiaoke.volley:library:1.0.19'
2.post请求
简介:适用于数据量不大但是通信频繁的场景, 如:带图片的列表
1.创建请求队列对象
2.创建请求对象,StringRequest :获取字符串结果的请求 JsonRequest:获取json请求结果 ImageRequest : 获取图片请求结果
3.将请求添加到队列中
public void LoginRequest(final String user, final String password) {
String url = "http://" + ip + "" + port + "/GoBang/LoginServlet";
String tag = "login";
//取得请求队列
RequestQueue requestQueue = Volley.newRequestQueue(context);
//防止重复请求,所以先取消tag标识的请求队列
requestQueue.cancelAll(tag);
//创建StringRequest,定义字符串请求的请求方式为POST
final StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG", response);
try {
JSONObject jsonObject = (JSONObject) new JSONObject(response).get("params");
String result = jsonObject.getString("result");
if (result.equals("success")) { //登录成功
// TODO: 2019/2/23 跳转页面
LoginActivity.loginhandler.sendEmptyMessage(1);
Toast.makeText(context, "登录成功", Toast.LENGTH_SHORT).show();
} else { //登录失败
Toast.makeText(context, "账号或密码不正确", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
Toast.makeText(context, "网络错误请稍后重试", Toast.LENGTH_SHORT).show();
}
}) {
//重写此方法传递参数
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("user", user);
params.put("password", password);
return params;
}
};
request.setTag(tag);
//将请求加到队列中
requestQueue.add(request);
}