Cómo obtener cookies en HttpUrlConnection usando CookieStore?

En mi clase de Application , hago lo siguiente:

 public class MyApplication extends Application { private static HttpURLConnection conn = null; public static CookieStore cookieStore; public static HttpContext localContext; public static DefaultHttpClient client = new DefaultHttpClient(); @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); CookieSyncManager.createInstance(this); cookieStore = new BasicCookieStore(); localContext = new BasicHttpContext(); localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); } ... } 

Y tengo una conexión en Runnable partes Runnable :

 HttpURLConnection conn = null; URL url; try { url = new URL(requestUrl); conn = (HttpURLConnection) url.openConnection(); if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { System.setProperty("http.keepAlive", "false"); } conn.setConnectTimeout(8000); conn.setRequestMethod(method); conn.setInstanceFollowRedirects(false); conn.setRequestProperty("Content-Type","application/x-www-form-urlendcoded"); MyApplication app = (MyApplication) mContext.getApplicationContext(); ******************************************* if(app.cookieStore.getCookies()!=null){ conn.setRequestProperty("Cookie", app.cookieStore.getCookies().toString()); Log.d("tag", "cookie get " + cookie.getCookie(mContext.getString(R.string.host_url))); } ********** this part not work ********** Map m = conn.getHeaderFields(); if (m.containsKey("Set-Cookie")) { String cookies = ""; Collection c = (Collection) m.get("Set-Cookie"); for (Iterator i = c.iterator(); i.hasNext();) { cookies += (String) i.next() + ","; } cookie.setCookie(mContext.getString(R.string.host_url), cookies); Log.d("tag", "cookie set " + cookies); } } catch(...) { ... } 

Cookiee usando cookieStore y también fijo las galletas, pero no consigo nada, él devuelve null .
¿Cómo usar CookieStore ?

Un ejemplo y una respuesta dan esto:

 List<Cookie> cookies = app.client.getCookieStore().getCookies(); 

También devuelve null para mí.

Utilícelo para configurar las cookies.

Primero, configure upcookieManager:

  cookieManager = new java.net.CookieManager(); CookieHandler.setDefault(cookieManager); cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); 

A continuación, establezca las cookies en HttpUrlConnection por setRequestProperty ()

  if (cookieManager.getCookieStore().getCookies().size() > 0) { List<HttpCookie> cookies = cookieManager.getCookieStore().getCookies(); if (cookies != null) { for (HttpCookie cookie : cookies) { conn.setRequestProperty("Cookie", cookie.getName() + "=" + cookie.getValue()); } } } 

Set cookie:

 conn.setRequestProperty("Cookie", "cookieName=cookieValue; domain=www.test.com"); 

Obtener cookie:

 Map<String, List<String>> headerFields = conn.getHeaderFields(); List<String> cookiesHeader = headerFields.get("Set-Cookie"); if(cookiesHeader != null){ String cookie = cookiesHeader.get(0); HttpCookie httpCookie = HttpCookie.parse(cookie).get(0); String name = httpCookie.getName(); String value = httpCookie.getValue() String domain = httpCookie.getDomain(); } 
  • Estrategia de la aplicación de Android para realizar un seguimiento de una sesión de inicio de sesión
  • Android: solicitud de revisión de Volley HTTP
  • Solicitud de Android POST utilizando HttpUrlConnection obtener "ya conectado"
  • Diferencia entre okhttp y httpurlconnection?
  • URLConnection getContentLength () devuelve un valor negativo
  • Adición de legado HTTP a Android Studio
  • ¿Por qué URLConnection tiempo de espera después de 6 + minutos en lugar de 5 segundos?
  • HttpURLConnection Post: El flujo de salida no tiene efecto?
  • HTTP Basic problema de autenticación en Android Jelly Bean 4.1 con HttpURLConnection
  • HTC Un error? Partes del encabezado HTTP que aparecen en URLConnection InputStream
  • HttpURLConnection - "https: //" frente a "http: //"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.