0

I have login API that returns sessionId in its response and I have to send this sessionId for API that takes sessionId in the header and returns if the user did log in before or not but it always returns false value in android. but I tested it using postman -with interceptor enabled- and it worked fine.

the cookie appeared in the log fine

here is what i did

public class CookieInterceptor implements Interceptor {
    private static volatile String cookie;

    public static void setSessionCookie(String cookies) {
        cookie = cookies;
    }

    @Override
    public okhttp3.Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        if (cookie != null) {
            request = request.newBuilder()
                    .addHeader("Cookie", cookie)
                    .build();
        }
        return chain.proceed(request);
    }
}

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);

        final OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addNetworkInterceptor(logging)
                .addInterceptor(new CookieInterceptor())
                .readTimeout(120, TimeUnit.SECONDS)
                .connectTimeout(120, TimeUnit.SECONDS)
                .build();
        mRetrofit = new Retrofit.Builder()
                .baseUrl(Constants.BASE_URL)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxErrorHandlingCallAdapterFactory.create())
                .build();

the log is : - for sent request

--> GET https://giftdisk.com/my_en/mobileapi/customer/status http/1.1
 D/OkHttp: Cookie: frontend=d6652f83347c30f500cd444191b7cefb
 D/OkHttp: Host: giftdisk.com
 D/OkHttp: Connection: Keep-Alive
 D/OkHttp: Accept-Encoding: gzip
 D/OkHttp: User-Agent: okhttp/3.3.1
 D/OkHttp: --> END GET
  • for received request

    <-- 200 OK https://giftdisk.com/my_en/mobileapi/customer/status (728ms)
     D/OkHttp: Date: Thu, 09 Feb 2017 16:08:45 GMT
     D/OkHttp: X-Powered-By: PHP/5.4.45
     D/OkHttp: Expires: Thu, 19 Nov 1981 08:52:00 GMT
     D/OkHttp: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
     D/OkHttp: Pragma: no-cache
     D/OkHttp: Content-Encoding: gzip
     D/OkHttp: Vary: Accept-Encoding
     D/OkHttp: Set-Cookie: frontend=dadcf55472df1475a63a965e8363c914; expires=Thu, 09-Feb-2017 17:08:46 GMT; path=/; domain=giftdisk.com;
        02-10 06:13:32.859 31752-32731/ae.cws.giftdisk D/OkHttp: Set-Cookie: frontend_cid=j1JGqUiVmox6GjQ6; expires=Thu, 09-Feb-2017 17:08:46 GMT; path=/; domain=giftdisk.com; secure; httponly
     D/OkHttp: Keep-Alive: timeout=3, max=30
     D/OkHttp: Connection: Keep-Alive
     D/OkHttp: Transfer-Encoding: chunked
     D/OkHttp: Content-Type: text/html; charset=UTF-8
     D/OkHttp: <-- END HTTP (encoded body omitted)
    
mahmoud
  • 232
  • 3
  • 10

2 Answers2

0

Sounds like you might want to use the native cookie jar / policy support via the CookieManager. See this other SO question / answer: https://stackoverflow.com/a/24267060/25398

Community
  • 1
  • 1
Cody Caughlan
  • 32,456
  • 5
  • 63
  • 68
0

The second part of your logs is what the server actually responded, which might be completely unrelated to what you sent (first log).

What are you expecting there?

Robert Estivill
  • 12,369
  • 8
  • 43
  • 64