2013-08-23 56 views
1

我們有一個django框架設置,並且在django中的登錄正在工作。我們需要在android上獲得這個會話ID,我不知道我們如何做到這一點。所以,如果我們從android發出一個http帖子,我們需要一個來自django的會話ID,我們可以將它用於將來發布並獲取來自該用戶的請求。android上的Django會話ID

+0

你有沒有找到任何解決方案。 –

回答

1

爲達到此目的,您需要維護會話。並保持會議有兩個posibilities

1)使用一個DefaultHttpClient所有請求

如果您想要同時調用多個請求,則此方法將不起作用。

2)在多個DefaultHttpClient連接中同步通用Cookie。

public static List<Cookie> cookies; 

登錄後瀏覽會話cookie。

HttpResponse WSresponse = httpclient.execute(httppost); 


       try { 
        cookies = httpclient.getCookieStore().getCookies(); 
        sync(); 
       } catch (Exception e) { 
       } 

public static DefaultHttpClient getHttpclient() { 

     HttpParams httpParameters = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParameters, timeOut); 
     HttpConnectionParams.setSoTimeout(httpParameters, timeOut); 
     DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters); 

     if (cookies != null) { 
      int size = cookies.size(); 
      for (int i = 0; i < size; i++) { 
       httpclient.getCookieStore().addCookie(cookies.get(i)); 
      } 
     } 
     return httpclient; 
    } 

UPDATE:

public void sync() { 
     if (cookies != null) { 

      CookieManager cookieManager = CookieManager.getInstance(); 
      cookieManager.setAcceptCookie(true); 
      for (Cookie cookie : cookies) { 

       Cookie sessionInfo = cookie; 
       String cookieString = sessionInfo.getName() + "=" + sessionInfo.getValue() + "; domain=" + sessionInfo.getDomain(); 
       cookieManager.setCookie("http://yourdomain.com", cookieString); 
       CookieSyncManager.getInstance().sync(); 
      } 
     } 
    } 

sync()方法是,如果你想好像你是在本地應用程序日誌中進行使用的東西,爲的HttpClient和網頁流量管理會話/ browser.That是並想要在webview上進行一些特定的操作,這是需要登錄的,這種方法將管理app和webview/browser之間的通用會話。

+0

什麼是同步功能? –