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

How to store cookies in Android?

1个答案

1

In Android development, handling and storing cookies can be achieved through several methods. I will illustrate these methods with specific examples.

1. Using HttpURLConnection

When using the native HttpURLConnection for network requests, cookies can be managed using CookieManager and CookieStore. Here is a simple example:

java
// First, create a CookieManager CookieManager cookieManager = new CookieManager(); CookieHandler.setDefault(cookieManager); // Then, create a URL connection URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // Send the request connection.setRequestMethod("GET"); connection.connect(); // Retrieve cookies from the response List<String> cookieList = connection.getHeaderFields().get("Set-Cookie"); if (cookieList != null) { for (String cookieTemp : cookieList) { cookieManager.getCookieStore().add(null, HttpCookie.parse(cookieTemp).get(0)); } } // Now cookies are stored in the CookieStore

2. Using OkHttp

If you use the OkHttp library for network requests, you can manage cookies using its built-in cookie handling mechanism. OkHttp does not store cookies by default unless you configure a CookieJar. Here is an example of how to store cookies with OkHttp:

java
// Create a CookieJar to persistently store cookies 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; } }; // Use this CookieJar to create an OkHttpClient OkHttpClient client = new OkHttpClient.Builder() .cookieJar(cookieJar) .build(); // Now, use the client to send requests; cookies will be stored and sent Request request = new Request.Builder() .url("http://example.com") .build(); client.newCall(request).execute();

If you use WebView in your application, you can manage cookies in WebView using the CookieManager class. For example:

java
// Get the WebView's CookieManager instance CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); // Set a cookie String cookieString = "name=value; domain=example.com; path=/"; cookieManager.setCookie("http://example.com", cookieString); // Synchronize if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.flush(); } else { CookieSyncManager.getInstance().sync(); } // Retrieve a cookie String cookie = cookieManager.getCookie("http://example.com");

These are several common methods for managing and storing cookies in Android development. Depending on the specific application scenarios and requirements, you can choose the appropriate method to implement.

2024年8月12日 12:49 回复

你的答案