Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改装2个割台和x27;行不通_Android_Retrofit2_Okhttp3 - Fatal编程技术网

Android 改装2个割台和x27;行不通

Android 改装2个割台和x27;行不通,android,retrofit2,okhttp3,Android,Retrofit2,Okhttp3,我有一个登录API,它在响应中返回sessionId,我必须为API发送这个sessionId,该API在头中接受sessionId,并返回用户是否在之前登录,但在android中它总是返回false值。但我使用postman测试了它——启用了拦截器——并且效果很好 饼干出现在日志中 这就是我所做的 public class CookieInterceptor implements Interceptor { private static volatile String cookie;

我有一个登录API,它在响应中返回sessionId,我必须为API发送这个sessionId,该API在头中接受sessionId,并返回用户是否在之前登录,但在android中它总是返回false值。但我使用postman测试了它——启用了拦截器——并且效果很好

饼干出现在日志中

这就是我所做的

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();
日志是: -用于发送请求

--> 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
  • 对于收到的请求

    <-- 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)
    

    听起来您可能希望通过
    CookieManager
    使用本机cookie jar/策略支持。查看另一个SO问题/答案:

    日志的第二部分是服务器实际响应的内容,这可能与您发送的内容(第一个日志)完全无关

    你在那里期待什么