2013-08-23 3 views
1

django 프레임 워크 설정이 있고 django에서 로그인이 작동 중입니다. 우리는이 세션 ID를 안드로이드에서 가져와야하며 어떻게 할 수 있는지 확신 할 수 없습니다. 그래서 우리가 안드로이드에서 http 게시물을 만들면 우리는 장고에서 우리가 미래의 게시물에 사용할 수있는 세션 ID가 필요하며이 사용자로부터 요청을받습니다.android에서 Django 세션 ID

+0

해결 방법을 찾으셨습니까? –

답변

1

세션을 유지 관리해야합니다. 세션을 유지하려면 두 가지 가능성이 있습니다.

1) 모든 요청에 ​​단일 DefaultHttpClient를 사용하십시오 ().

동시에 여러 요청을 호출하려는 경우이 방법은 작동하지 않습니다.

2) 여러 개의 DefaultHttpClient 연결간에 공통 쿠키를 동기화합니다. 로그인 후

public static List<Cookie> cookies; 

읽기 세션 쿠키.

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

그 동기화 기능이란 무엇입니까? –