乐闻世界logo
搜索文章和话题

安卓如何存储 Cookie ?

1 个月前提问
1 个月前修改
浏览次数6

1个答案

1

在安卓开发中,处理和存储Cookie主要可以通过几种方式实现。我会用一些具体的例子来说明这些方法。

1. 使用 HttpURLConnection

当使用原生的HttpURLConnection进行网络请求时,可以通过CookieManagerCookieStore来管理Cookies。以下是一个简单的示例:

java
// 首先,创建一个CookieManager CookieManager cookieManager = new CookieManager(); CookieHandler.setDefault(cookieManager); // 然后,你可以创建一个URL连接 URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 发送请求 connection.setRequestMethod("GET"); connection.connect(); // 从响应中获取Cookies List<String> cookieList = connection.getHeaderFields().get("Set-Cookie"); if (cookieList != null) { for (String cookieTemp : cookieList) { cookieManager.getCookieStore().add(null, HttpCookie.parse(cookieTemp).get(0)); } } // 现在Cookies存储在CookieStore中

2. 使用 OkHttp

如果你使用OkHttp库进行网络请求,可以通过其内置的Cookie处理机制来管理Cookies。OkHttp默认不会存储Cookie,除非你配置一个CookieJar。以下是使用OkHttp时如何存储Cookies的例子:

java
// 创建一个CookieJar来持久化存储Cookie CookieJar cookieJar = new CookieJar() { private final List<Cookie> cookieStore = new ArrayList<>(); @Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { cookieStore.addAll(cookies); } @Override public List<Cookie> loadForRequest(HttpUrl url) { return cookieStore; } }; // 使用这个CookieJar创建OkHttpClient OkHttpClient client = new OkHttpClient.Builder() .cookieJar(cookieJar) .build(); // 现在,使用client发送请求,Cookies将会被存储和发送 Request request = new Request.Builder() .url("http://example.com") .build(); client.newCall(request).execute();

3. WebView中的Cookie管理

如果你在应用中使用WebView,那么可以通过CookieManager类来管理WebView中的Cookies。例如:

java
// 获取WebView的CookieManager实例 CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); // 设置Cookie String cookieString = "name=value; domain=example.com; path=/"; cookieManager.setCookie("http://example.com", cookieString); // 同步 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.flush(); } else { CookieSyncManager.getInstance().sync(); } // 获取Cookie String cookie = cookieManager.getCookie("http://example.com");

这些是安卓开发中常见的几种管理和存储Cookie的方法。根据不同的应用场景和需求,可以选择适合的方法来实现。

2024年8月12日 12:49 回复

你的答案