Soru & Cevap

Get Post methodlarında Cookie aktarım sorunu

13.10.2016 - 03:10

Apache DefaultHttpClient, Volley, OkHttp gibi bir çok yapıyı denediğim halde fonksiyonlar arasında cookie aktarımını bir türlü sağlayamadım. Web'deki login fonksiyonunu tetikledikten sonra, diğer tüm fonksiyonlar bu işlemin sonucunda oluşan cookie bilgisine göre çalışıyor fakat ben cookie datasını aktaramadığım için, diğer fonksiyonları tetiklediğimde 403 hatası alıyorum. Bu sorunun çözümüne dair, acil önerilerinizi bekliyorum.

16 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user mserhatc
mserhatc
18.10.2016 - 05:06
try{
                    OkHttpClient client = new OkHttpClient.Builder()
                            .cookieJar(new CookieJar() {
                                private final HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>();

                                @Override
                                public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
                                    cookieStore.put(url, cookies);
                                }

                                @Override
                                public List<Cookie> loadForRequest(HttpUrl url) {
                                    List<Cookie> cookies = cookieStore.get(url);
                                    return cookies != null ? cookies : new ArrayList<Cookie>();
                                }
                            })
                            .build();
                    Request request = new Request.Builder().url(Global.url+"/api/csrf").build();
                    Response response = client.newCall(request).execute();
                } catch (Exception e){
                    Log.v("----",e.getMessage());
                }

Selamlar,

Yukarıdaki şekilde denediğimde uygulama kapanıyor. Sorun ne olabilir.

picture-10101-1474638815.jpg
erdema
14.10.2016 - 07:09

okhttp için : 

OkHttpClient client = new OkHttpClient.Builder()
    .cookieJar(new CookieJar() {
        private final HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>();

        @Override
        public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
            cookieStore.put(url, cookies);
        }

        @Override
        public List<Cookie> loadForRequest(HttpUrl url) {
            List<Cookie> cookies = cookieStore.get(url);
            return cookies != null ? cookies : new ArrayList<Cookie>();
        }
    })
    .build();

şeklinde kullanabilirsin ya da java.net.CookieManager kullanabilmek için okhttp-urlconnection'ı projene eklemen gerek.

dependencies {
    compile "com.squareup.okhttp3:okhttp-urlconnection:3.0.0"
}
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
OkHttpClient client = new OkHttpClient.Builder()
    .cookieJar(new JavaNetCookieJar(cookieManager))
    .build();

 

 

Mehmet Çakır
18.10.2016 - 05:11
Maalesef yine çalışmadı.