Popular Posts
Read exif using metadata extraction metadata extraction version : 2.3.1 metadata extraction import java.io.File; import java.io.FileNotFoundException; import java.util.Iterato... Chrome Extension: Easy Cookie A simple cookie viewer/editor : Easy Cookie It's easy to view cookies at a web site Simply add a new cookie ... Capture response output stream using HttpModule using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Web; namespace TestWebA...
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);
        }
    }
}