KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > javacoding > jspider > core > util > http > CookieUtil


1 package net.javacoding.jspider.core.util.http;
2
3
4 import net.javacoding.jspider.api.model.Cookie;
5
6 import java.net.URLConnection JavaDoc;
7 import java.util.ArrayList JavaDoc;
8 import java.util.StringTokenizer JavaDoc;
9
10
11 /**
12  *
13  * $Id: CookieUtil.java,v 1.8 2003/04/08 18:44:15 vanrogu Exp $
14  *
15  * @author Günther Van Roey
16  */

17 public class CookieUtil {
18
19     public static final String JavaDoc HEADER_SET_COOKIE = "Set-Cookie";
20
21     public Cookie[] getCookies(URLConnection JavaDoc connection) {
22
23         String JavaDoc[] cookieStrings = getCookieStrings(connection);
24         return getCookies(cookieStrings);
25     }
26
27     protected String JavaDoc[] getCookieStrings(URLConnection JavaDoc connection) {
28         ArrayList JavaDoc arrayList = new ArrayList JavaDoc();
29
30         String JavaDoc headerKey = null;
31         String JavaDoc headerValue = null;
32
33         int i = 0;
34
35         do {
36
37             headerKey = connection.getHeaderFieldKey(i);
38             // Must be read here because the HTTP header's key is null, so loop would end otherwise
39
headerValue = connection.getHeaderField(i);
40
41             if (HEADER_SET_COOKIE.equalsIgnoreCase(headerKey)) {
42                 if (headerValue != null) {
43                     arrayList.add(headerValue.trim());
44                 } else {
45                     arrayList.add(headerValue);
46                 }
47             }
48             i++;
49
50         } while (headerKey != null || headerValue != null);
51
52         return (String JavaDoc[]) arrayList.toArray(new String JavaDoc[arrayList.size()]);
53     }
54
55     protected Cookie[] getCookies(String JavaDoc[] cookieString) {
56         Cookie[] cookies = new Cookie[cookieString.length];
57         int used = 0;
58
59         for (int i = 0; i < cookieString.length; i++) {
60             String JavaDoc s = cookieString[i];
61             Cookie cookie = getCookie(s);
62             if (cookie != null) {
63                 cookies[used++] = cookie;
64             }
65         }
66         Cookie[] retVal = new Cookie[used];
67         System.arraycopy(cookies, 0, retVal, 0, used);
68         return retVal;
69     }
70
71     public Cookie getCookie(String JavaDoc cookieString) {
72         Cookie cookie = null;
73         if (cookieString != null && !cookieString.trim().equals("")) {
74             StringTokenizer JavaDoc st = new StringTokenizer JavaDoc(cookieString, ";");
75
76             String JavaDoc name = "";
77             String JavaDoc value = "";
78             String JavaDoc domain = "";
79             String JavaDoc path = "";
80             String JavaDoc expires = "";
81
82             // First part of a cookie string is name=value; ...
83
while (st.hasMoreTokens()) {
84                 String JavaDoc token = st.nextToken();
85                 StringTokenizer JavaDoc st2 = new StringTokenizer JavaDoc(token, "=");
86                 if (st2.hasMoreTokens()) {
87                     String JavaDoc propName = st2.nextToken().trim();
88                     if (st2.hasMoreTokens()) {
89                         String JavaDoc propValue = st2.nextToken().trim();
90                         if ("value".equalsIgnoreCase(propName)) {
91                             value = propValue;
92                         } else if ("domain".equalsIgnoreCase(propName)) {
93                             domain = propValue;
94                         } else if ("path".equalsIgnoreCase(propName)) {
95                             path = propValue;
96                         } else if ("expires".equalsIgnoreCase(propName)) {
97                             expires = propValue;
98                         } else {
99                             name = propName;
100                             value = propValue;
101                         }
102                     }
103                 }
104             }
105             cookie = new Cookie(name, value, domain, path, expires);
106         }
107         return cookie;
108     }
109
110 }
111
Popular Tags