private LoginModel loginModel;
private RequestQueue requestQueue;
private StringRequest stringRequest;
// toast 提示
private Toast toast;
// 声明toast
toast = Toast.makeText(LoginActivity.this, "", Toast.LENGTH_SHORT);
// 在类中实例化RequestQueue
requestQueue = Volley.newRequestQueue(LoginActivity.this);
// 建议将RequestQueue 实例化写在你的程序入口 Application 中
/*
// 在Application中实例化RequestQueue
private static MyApplication myApplication;
private RequestQueue mRequestQueue;
// **Application中写法** 将实例化写成一个方法
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
*/
///////////////////////////////////// 请求方式 post
stringRequest = new StringRequest(Request.Method.POST, "请求地址", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// 使用Gosn解析Json数据
Gson gson = new Gson();
// 将数据存到model实体类中
loginModel= gson.fromJson(response, LoginModel.class);
// 在model中取出单个数据参数
String user_id = loginModel.getUser_id;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// 请求错误就会进入这里
toast.setText("请求网络失败");// 设置提示文字内容
// 提示出现的位置 CENTER==中心位置 0,0表示是横纵坐标偏移
toast.setGravity(Gravity.CENTER,0,0)
// 显示提示
toast.show;
}
}) {
//////////////// 在这里可以获取Cookie或者是设置Cookie
// 像服务器post提交参数的方法
@Override
protected Map<String, String> getParams() {
// 在这里设置需要post的参数
HashMap<String, String> map = new HashMap<String, String>();
map.put("user_name", "");
map.put("password", "");
return map;
}
};
requestQueue.add(stringRequest);
////////////////////// 请求方式get
stringRequest = new StringRequest(Request.Method.GET, "请求地址", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// 使用Gosn解析Json数据
Gson gson = new Gson();
// 将数据存到model实体类中
loginModel= gson.fromJson(response, LoginModel.class);
// 在model中取出单个数据参数
String user_id = loginModel.getUser_id;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// 请求错误就会进入这里
toast.setText("请求网络失败");// 设置提示文字内容
// 提示出现的位置 CENTER==中心位置 0,0表示是横纵坐标偏移
toast.setGravity(Gravity.CENTER,0,0)
// 显示提示
toast.show;
}
}) {
//////////////// 在这里可以获取Cookie或者是设置Cookie
};
requestQueue.add(stringRequest);
/////////////////////////////// Volley中获取Cookie的方法
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
Response<String> superResponse = super .parseNetworkResponse(response);
Map<String, String> responseHeaders = response.headers;
String rawCookies = responseHeaders.get("Set-Cookie");
Log.i("name", "session的输出=" + rawCookies);
// 用上一篇博客提到的轻量级存储把获取到的Cookie保存起来在下次设置时直接取
SharedPreferences saveSharedPreferences = getSharedPreferences("cookie", MODE_PRIVATE);
SharedPreferences.Editor editor = saveSharedPreferences .edit();
editor.putString("cookie", rawCookies);
editor.commit();
return superResponse;
}
/////////////////////////////// Volley中设置Cookie的方法
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
// 获取保存过的Cookie
my_Cookie SharedPreferences getSharedPreferences = getSharedPreferences ("cookie", MODE_PRIVATE);
String my_Cookie = getSharedPreferences.getString("cookie", "");
Log.i("fei_niao", "读取Cookie设置到新的请求:" + my_Cookie);
headers.put("Cookie", my_Cookie);
return headers;
}