2013-06-26 14 views
5

Come posso utilizzare i cookie di sessione utilizzando la libreria volley con una richiesta come questa?Utilizzo dei cookie di sessione con la libreria android volley di JsonObjectRequest

JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 

    @Override 
    public void onResponse(JSONObject response) { 
     //Response 
    } 
    }, new Response.ErrorListener() { 

    @Override 
    public void onErrorResponse(VolleyError error) { 
     //Error 
    } 
}); 
queue.add(jsObjRequest); 

grazie

risposta

1
BasicHttpParams mHttpParams = new BasicHttpParams(); 

    // Set the timeout in milliseconds until a connection is established. 
    // The default value is zero, that means the timeout is not used. 
    int timeoutConnection = 15000; 
    HttpConnectionParams.setConnectionTimeout(mHttpParams, timeoutConnection); 
    // Set the default socket timeout (SO_TIMEOUT) 
    // in milliseconds which is the timeout for waiting for data. 
    int timeoutSocket = 20000; 
    HttpConnectionParams.setSoTimeout(mHttpParams, timeoutSocket); 

    SchemeRegistry registry = new SchemeRegistry(); 
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
    final SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory(); 
    sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); 
    registry.register(new Scheme("https", sslSocketFactory, 443)); 

    /*ClientConnectionManager cm = new ThreadSafeClientConnManager(mHttpParams, registry);*/ 
    DefaultHttpClient defaultHttpClient = new DefaultHttpClient(/*cm,*/ mHttpParams); 

    RequestQueue requestQueue = Volley.newRequestQueue(mContext.getApplicationContext(),new HttpClientStack(defaultHttpClient)); 
1

io uso Volley Biblioteca Android perché come AFNetworking in iOS. Più facile e veloce precedente. Informazioni sui cookie Sessione in caso di accesso riuscito. ho configurato:

CookieManager cookieManage = new CookieManager(); 
CookieHandler.setDefault(cookieManage); 

Ed è imbattuto successo. Ma, CookieManage esegue solo in versione 8 più grande SDK.

Come: in AndroidManifest.xml

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

Spero che ti può aiutare! Grazie.

1

questo è il modo che ho fatto per salvare i cookie utilizzando Volley con JsonObjectRequest

L'idea è quella di catturare l'intestazione Set-Cookie che torna con la mia richiesta JSON e poi salvarlo in preferenze

Richiesta

  JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, 
       url, 
       (String)param, 
       requestFuture, requestFuture){ 

      @Override 
      public String getBodyContentType() { 
       return "application/x-www-form-urlencoded"; 
      } 


      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       Show.m("getHeaders"); 

       Map<String,String> headers = new HashMap<String, String>(); 
       headers.put("Accept","application/json"); 


       if(!MyApplication.getCookie(context).equals("")){ 
        String cookie = MyApplication.getCookie(context); 
        Show.m("Cookie to load from preferences: " + cookie); 
        headers.put("Cookie", cookie); 
       } 

       return headers; 
      } 

      @Override 
      protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { 
       Map headers = response.headers; 
       String cookie = (String)headers.get("Set-Cookie"); 
       MyApplication.saveCookie(context, cookie); 

       Show.m("Cookie to save to preferences: " + cookie); 

       return super.parseNetworkResponse(response); 
      } 
     }; 

Preferenze

public static void saveCookie(Context context, String cookie) { 
     if (cookie == null) { 
      return; 
     } 

     // Save in the preferences 
     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); 
     if (null == sharedPreferences) { 
      return; 
     } 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putString("cookie", cookie); 
     editor.commit(); 
    } 

    public static String getCookie(Context context) 
    { 
     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); 
     String cookie = sharedPreferences.getString("cookie", ""); 
     if (cookie.contains("expires")) { 
      removeCookie(context); 
      return ""; 
     } 
     return cookie; 
    } 
+0

Sei il mio eroe !! – aletede91

Problemi correlati