1

django フレームワークのセットアップがあり、django でのログインが機能しています。AndroidでこのセッションIDを取得する必要がありますが、これを行う方法がわかりません。したがって、Android から http 投稿を作成する場合、将来の投稿に使用してこのユーザーからのリクエストを取得できる Django からのセッション ID が必要です。

4

1 に答える 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 に答える