Volley 프레임워크에서 쿠키 및 쿠키 요청 링크 가져오기

7337 단어 android
최근에 나는 자신의 사이트를 위해 앱을 만들 때 사용자의 로그인 상태를 기록할 수 없다는 문제에 부딪혔다.휴대전화의 매번 일반적인 요청은 서버가 이를 새로운 사용자의 요청으로 여긴다.이게 무슨 이유죠?사실 휴대전화의 매번 요청이 서버가 처음 요청되었을 때 되돌아오는 쿠키를 가지고 있지 않기 때문에 쿠키의 요청이 없으면 서버가 새 사용자로 묵인되어 로그인 상태를 기록할 수 없는 문제가 발생한다.
이를 위해 Volley를 선택했습니다.
Volley 프레임이란 무엇일까요?그것은 작은 데이터, 빈번한 네트워크 조작, 그리고 그림을 불러오는 데 적합하지만 단점이 있다. 빅데이터 양의 네트워크 조작, 예를 들어 파일을 다운로드하는 등 Volley의 표현은 매우 나쁘다.
오늘 저는 여러분께volley 프레임워크를 가지고 쿠키를 가져오고 쿠키를 가져오는 요청 강좌를 드리겠습니다.
android 사이드 아날로그 브라우저 접근 방식:
1. 프레임워크를 통해 첫 번째 로그인에 성공하고 돌아온 쿠키 2를 가져오고, SharedPreferences로 쿠키 3를 저장하고, 요청할 때마다 저장된 쿠키를 요청 머리에 놓는다.
다음은 제가 여러분께 주요 코드를 드리겠습니다.
1. 쿠키를 저장하는 방법:
private void saveSettingNote(String s,String saveData){// 
        SharedPreferences.Editor note = getSharedPreferences(Config.ShareTo,MODE_PRIVATE).edit();
        note.putString(s, saveData);
        note.commit();
    }

2. 레코드에서 쿠키를 가져오는 방법:
private String getSettingNote(String s){// 
        SharedPreferences read = getSharedPreferences(Config.ShareTo, MODE_PRIVATE);
        return read.getString(s, "");
    }

3. 첫 번째 쿠키 요청:
RequestQueue mQueue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.url+"/port/login_port.ashx", new Response.Listener<String>() {


            @Override
            public void onResponse(String s) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {}
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> map = new HashMap<String, String>();
                return map;
            }

            @Override
            protected Response<String> parseNetworkResponse(NetworkResponse response) {
                try {

                    Map<String, String> responseHeaders = response.headers;
                    String rawCookies = responseHeaders.get("Set-Cookie");
saveSettingNote(Config.Cookie,rawCookies);// Cookie
                    Log.i("px",rawCookies+"
"
); String dataString = new String(response.data, "UTF-8"); Log.i("px",dataString); return Response.success(dataString, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } } }; mQueue.add(stringRequest);

4. 쿠키 요청
RequestQueue mQueue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, Config.url+"/port/get_category_port.ashx", new Response.Listener() {
            @Override
            public void onResponse(String s) {
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
            }
        }) {
            @Override
            public Map getHeaders() throws AuthFailureError {
                HashMap localHashMap = new HashMap();
                localHashMap.put("Cookie", getSettingNote(Config.Cookie));// Cookie
                return localHashMap;
            }
        };
        mQueue.add(stringRequest);

됐어, 이 정도야.도움이 됐으면 좋겠어요.잘못이 있으면 지적해 주셔서 대단히 감사합니다.

좋은 웹페이지 즐겨찾기