继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Volley--使用Volley请求服务器数据

喵喔喔
关注TA
已关注
手记 388
粉丝 101
获赞 605

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; 

 }

原文链接:http://www.apkbus.com/blog-722618-72754.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP