divertido lo suficiente, pero java.net.HttpCookie
clase no puede analizar cadenas de galletas con dominio y/o partes de trayectoria que esta clase exacta java.net.HttpCookie
ha convertido en cadena.
Por ejemplo:
HttpCookie newCookie = new HttpCookie("cookieName", "cookieValue");
newCookie.setDomain("cookieDomain.com");
newCookie.setPath("/");
Como esta clase implementa Serializable ni tampoco parcelable, es tentador para almacenar las galletas en forma de cadenas. Por lo que escribir algo como:
saveMyCookieAsString(newCookie.toString());
Esta declaración va a salvar la cookie en el siguiente formato:
cookieName="cookieValue";$Path="/";$Domain="cookiedomain.com"
Y a continuación, si desea restaurar esta cookie, para que pueda obtener la cadena:
String cookieAsString = restoreMyCookieString();
y tratar de analizarlo:
List<HttpCookie> cookiesList = HttpCookie.parse(cookieAsString);
StringBuilder myCookieAsStringNow = new StringBuilder();
for(HttpCookie httpCookie: cookiesList) {
myCookieAsStringNow.append(httpCookie.toString());
}
ahora myCookieAsStringNow.toString();
produce
cookieName=cookieValue
dominio y la ruta partes se acaba ido. La razón: el método de análisis distingue entre mayúsculas y minúsculas de palabras como "dominio" y "ruta". método de proporcionar otra toString() como::
solución posible
public static String httpCookieToString(HttpCookie httpCookie) {
StringBuilder result = new StringBuilder()
.append(httpCookie.getName())
.append("=")
.append("\"")
.append(httpCookie.getValue())
.append("\"");
if(!TextUtils.isEmpty(httpCookie.getDomain())) {
result.append("; domain=")
.append(httpCookie.getDomain());
}
if(!TextUtils.isEmpty(httpCookie.getPath())){
result.append("; path=")
.append(httpCookie.getPath());
}
return result.toString();
}
Me parece gracioso (en especial, para las clases como java.net.HttpCookie
que están destinadas a ser utilizadas por mucho y mucha gente) y espero que será útil para alguien.
¿Qué cliente HTTP está utilizando? Android se envía con Apache Commons HttpClient. – BalusC
Estoy usando HttpClient para las conexiones pero he estado usando CookieSyncManager para conservar las cookies. No estoy utilizando la CookieStore de HttpClient en este momento. – cottonBallPaws