django フレームワークのセットアップがあり、django でのログインが機能しています。AndroidでこのセッションIDを取得する必要がありますが、これを行う方法がわかりません。したがって、Android から http 投稿を作成する場合、将来の投稿に使用してこのユーザーからのリクエストを取得できる Django からのセッション ID が必要です。
質問する
1497 次
1 に答える
1
これを達成するには、セッションを維持する必要があります。セッションを維持するには、2 つの可能性があります。
1) すべての request に対して単一の 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;
}
アップデート:
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 および webview/browser のセッションを管理するために使用されます。つまり、ネイティブ アプリケーションからログインしているようなものを実行したい場合や、ログインが必要な webview で特定の操作を実行したい場合は、このメソッドが管理します。アプリと webview/browser 間の共通セッション。
于 2013-08-24T05:58:23.250 に答える