نحوه ذخیره کوکی در برنامه اندروید و استفاده از آن در درخواستهای بعدی جهت ارسال به سرور

0 امتیاز
104 بازدید
سوال شده تیر 10, 1395 توسط aaamir829  
م،من از sharedprefrences استفاده میکنم و هیچ مشکلی ندارم،اسن تکنیک فقط به خود برنامه اندروید میگه یوزر لاگین هست یا خیر و به سرور ارتباطی نداره

من میخوام کوکی که از طرف سرور دریافت میکنم را ذخیره کرده و در درخواستهای بعدی  ازش استفاده کنم،روشش را ممنون میشم یرای بنده توضیح و با یک مثال شرح دهید
این مطلب را به اشتراک بگذارید

1 پاسخ

+1 امتیاز
پاسخ داده شده شهریور 30, 1395 توسط esi379  
انتخاب شده شهریور 31, 1395 توسط ASHKARAN
 
بهترین پاسخ

سلام

شما میتوانید با کد زیر کوکی را  پاسخ وب سرویس گرفته و در گوشی ذخیره کنید :

private CookieManager saveCookie = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(saveCookie);
String cookie = saveCookie.getCookieStore().getCookies().toString();
SharedPreferences saveCookie = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
SharedPreferences.Editor editor = saveCookie.edit();
editor.putString("cookie", cookie);
editor.commit();
دارای دیدگاه مهر 9, 1395 توسط esi379  

با سلام

شما برای دخیره و استفاده از کوکی ها در تبادلات شبکه ای یا باید از کلاس 

HttpURLConnection استفاده کنی که در اینصورت با استفاده از کلاس CookieManager میتونین کوکی ها رو ذخیره و استفاده کنی

یا اینکه اگر از کلاس Vollay استفاده میکنید که در اینصورت شاید با مشکل مواجه بشین چون هنوز کلاس Vollay بطور کامل از کوکی ها پشتیبانی نمیکنه و قراره در نسخه های بعدی این مشکل مرتفع بشه

به هر حال در کلاس Vollay یه متد بنام getHeaders() وجو داره که میتونین کوکی که ذخیره کردین رو بهش بدین تا بفرسته البته برخی مواقع ممکنه بدرستی این کارو نکنه و مشکل داشته باشه

دارای دیدگاه مهر 9, 1395 توسط esi379  
براتون یه نمونه کد میفرستم انشاالله که مفید باشه
دارای دیدگاه مهر 9, 1395 توسط esi379  

این یه کلاس واسه ذخیره کوکی در گوشیتون هستش

public class CookieHandle {

    private Context context = null;
    private CookieManager saveCookie = null;
    private SharedPreferences Cookie = null;


    public CookieHandle(Context context) {

        this.context = context;

        //Set cookie :
        saveCookie = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
        CookieHandler.setDefault(saveCookie);


    }

    public void saveCookie() {

        //Save cookie in device :
        Cookie = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
        SharedPreferences.Editor editor = Cookie.edit();

        String cookie = saveCookie.getCookieStore().getCookies().toString();
        editor.putString("cookie", cookie);
        editor.commit();

    }

}
دارای دیدگاه مهر 9, 1395 توسط esi379  

و ایتم کلاس Vollay برای دریافت کوکی ها

//Set cookie before Volley :
final CookieHandle cookieHandle = new CookieHandle(context);


//Try to connect to server for login :
RequestQueue MyRequestQueue = Volley.newRequestQueue(context);
StringRequest MyStringRequest = new StringRequest(Request.Method.POST, Url, new Response.Listener<String>() {

    @Override
    public void onResponse(String response) {


        //Save cookie :
        cookieHandle.saveCookie();


        if (response.contains("login successfull!")) {

            //Toast.makeText(context, "اطلاعات شما با موفقیت ذخیره شد", Toast.LENGTH_SHORT).show();


        }

    }


}, new Response.ErrorListener() {


    @Override
    public void onErrorResponse(VolleyError error) {


        //This code is executed if there is an error :

    }

}) {
    protected Map<String, String> getParams() {
        Map<String, String> MyData = new HashMap<String, String>();

        //Add the data you'd like to send to the server.
        MyData.put("user", userName);
        MyData.put("pass", passWord);
        return MyData;

    }

};

MyRequestQueue.add(MyStringRequest);
دارای دیدگاه مهر 9, 1395 توسط esi379  
موفق و موید باشید

977 سوال

819 پاسخ

1,329 دیدگاه

1,273 کاربر

متاسفانه نیستم

این مطلب را به اشتراک بگذارید

ali.ashkaran@gmail
ما .....
  • سعی بر پاسخگویی به سوالات دیگران داریم.
  • به سوال و یا نظر دیگران احترام می گذاریم .
  • این وبسایت را به دیگران معرفی می کنیم.
  • همواره صمیمیت و ادب را رعایت می کنیم.
  • به سوالمان برچسب های مرتبط اضافه می کنیم.
  • در حین طرح سوال فرد خاصی را مخاطب قرار نمی دهیم .
...