Cookie management skills in Android HTTP Client
Cookie management skills in Android HTTP Client
In the development of Android applications, network requests are a very common demand.When conducting network requests, cookies are often required.Cookie is a small paragraph of information stored on the client for tracking user sessions, personalized websites, etc.This article will introduce the technique of cooking in the Android HTTP Client framework and provide Java code examples.
1. Get cookie
We usually need to get cookie before conducting network requests.There are generally two ways to obtain cookie from the server: there are generally two ways:
1. Use ResponseInterceptor interceptor
When conducting a network request, you can use the ResponseInterceptor interceptor to intercept the response returned by the server and get cookie from it.Here are a sample code that uses the OKHTTP library:
public class CookieInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response response = chain.proceed(request);
if (!response.headers("Set-Cookie").isEmpty()) {
List<String> cookies = response.headers("Set-Cookie");
// Here
}
return response;
}
}
2. Use cookiemanager
Using the CookieManager class that comes with Java can easily manage cookies.The following is an example code that uses the httpurlconnection library:
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
URL url = new URL("http://example.com/login");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// send request
InputStream is = connection.getInputStream();
// Here
Second, setting cookie
When conducting network requests, sometimes Cookie is required manually.This is usually after logging in, you need to bring cookies in subsequent requests to keep the user session.Here are a sample code that uses the OKHTTP library:
public class CookieInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request.Builder builder = chain.request().newBuilder();
// Set down cookies here
builder.addHeader("Cookie", "sessionId=xxx");
return chain.proceed(builder.build());
}
}
Third, persistent cookie
To facilitate the next use, we usually need to store cookies for a long time.Android provides SharedPreferences for simple data storage.The following is a sample code that saves cookies to SharedPreferences:
SharedPreferences sharedPreferences = context.getSharedPreferences("Cookies", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Set<String> cookieSet = new HashSet<>();
// Add the obtained cookie to the set
cookieSet.addAll(cookies);
// Save SET in SharedPreferences
editor.putStringSet("Cookie", cookieSet);
editor.apply();
When you need to read cookie, you can use the following code:
SharedPreferences sharedPreferences = context.getSharedPreferences("Cookies", Context.MODE_PRIVATE);
Set<String> cookieSet = sharedPreferences.getStringSet("Cookie", new HashSet<>());
// Here
Summarize
Cookie management is an important technique in the Android HTTP Client framework.By using the method of acquiring cookies, setting cookies and persistence cookies that are suitable for their own projects, we can easily manage the needs of user session status and personalized websites.The above is some commonly used techniques and code examples. I hope it will be helpful for your cookie management in Android development.