2013-06-26 1 views
5

Comment puis-je utiliser des cookies de session en utilisant la bibliothèque volvo avec une requête comme celle-ci?Utilisation de cookies de session avec la bibliothèque de volée Android par 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); 

grâce

Répondre

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

J'utilise Volley Library Android, car comme AFNetworking dans iOS. Plus facile et plus rapide précédent. À propos des cookies Session lors de la connexion réussie. Je configuré:

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

Et il a couru succès. Mais, CookieManage exécute juste en version 8 plus grande SDK.

Comme: dans AndroidManifest.xml

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

Espérons que cela peut vous aider! Merci.

1

C'est la façon dont je l'ai fait pour sauver les cookies à l'aide de Volley avec JsonObjectRequest

L'idée est de capturer l'en-tête Set-Cookie qui revient à ma demande JSON puis enregistrez dans les préférences

Demande

  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); 
      } 
     }; 

Préférences

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

Vous êtes mon héros !! – aletede91

Questions connexes