Androidの複合用途hybirdフレームワークを達成するのWebViewの使用に基づいてどのような開発、それはWebViewのに同期しているときに我々はネイティブのページで、サーバーから返されたクッキーを取得する必要があり、元のページがWebView_cookiesから、サーバAPI呼び出しを前にしばらく最新のクッキーのHTTPリクエストヘッダを取得するには、書き込み、ユーザーのログイン状態を維持する唯一の方法、それ以外のサーバはセッションIDで検出されたクッキーを返します.DBエラーコードが失敗をログに記録するようにユーザに促す期限切れ。ローカル書き込みクッキーの間でHTTPリクエストのHTTPヘッダを送信するときに、それが応答を受信し、ローカルHTTPクッキーを更新するときに、ネットワークの枠組みをokhttpするには、例えば、2つのインターセプタを書き込むことによって得られ、クッキーが応答ヘッダから最新の情報を取得しますされました:
public class AddCookieInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
final Context context = PApplication.getInstance();
String cookies = Commons.getSSOCookie(context);
Request.Builder builder = chain.request().newBuilder();
if (EmptyHelper.isNotEmptyOrNotNull(cookies)) {
Request newRequest = builder.addHeader("Cookie", cookies).build();
return chain.proceed(newRequest);
}
}
}
复制代码
public class ReceivedCookieInterceptor implements Interceptor{
@Override
public Response intercept(Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
List<String> cookies = originalResponse.headers("Set-Cookie");
if (!cookies.isEmpty()) {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);// 允许接受 Cookie
String domain = HeadDomin();
for(String cookie : cookies){
cookieManager.setCookie(domain,cookie);
}
cookieManager.flush();
}
return originalResponse;
}
}
复制代码
ます。https://juejin.im/post/5ce79a4f6fb9a07ee4633d9dで再現