Popular Posts
Enable SSL connection for Jsoup import org.jsoup.Connection; import org.jsoup.Jsoup; import javax.net.ssl.*; import java.io.IOException; import java.security.KeyManagement... Join related table and count rows or sum sql server 2005 count rows: SELECT * FROM Table1 LEFT JOIN     (SELECT Level1ID, COUNT(Level2ID) AS Total FROM Table2 GROUP BY Level1ID) AS... Append soap header into axis When axis generate classese of web service, it won't include the request of soap header. Here is a way to append soap header manually i...
Blog Archive
Stats
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);
        }
    }
}