set/remove cookie using HttpClient
HttpClient version : 3.1
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
public class CookieManager {
public static String getCookieValue(HttpClient client, String key) {
Cookie cookie = getCookie(client, key);
return cookie == null ? null : cookie.getValue();
}
public static Cookie getCookie(HttpClient client, String key) {
Cookie[] cookies = client.getState().getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals(key))
return cookie;
}
return null;
}
public static void setCookie(HttpClient client, String key, String value) {
Cookie cookie = new Cookie("", key, value);
setCookie(client, cookie);
}
// 設定cookie的值
public static void setCookie(HttpClient client, Cookie cookie) {
Cookie[] cookies = client.getState().getCookies();
if (cookies.length > 0)
cookie.setDomain(cookies[0].getDomain());
boolean isContained = false; // 檢查是否有值
for (Cookie ck : cookies) {
if (cookie.getName().equals(ck.getName()))
isContained = true;
}
if (!isContained) { // 如果未設定, 直接加入
client.getState().addCookie(cookie);
return;
}
client.getState().clearCookies();
for (Cookie ck : cookies) {
if (cookie.getName().equals(ck.getName()))
ck.setValue(cookie.getValue()); // 取代原有值
client.getState().addCookie(ck);
}
}
}