0

私のAndroidアプリケーションでは、最初の画面でユーザーが認証され、サーブレットがセッションIDで応答します... 2番目の画面で、ユーザーは再びセッションIDをURLに追加してサーブレットを呼び出します;jsession="sessionid" パラメータとともに。 ..

しかし、サーブレットはセッションIDを取得しておらず、認証なしで新しいセッションとして応答しています...

問題はどこだ?

接続にこのコードを使用しています

                    URL u = new URL(aurl[0]);
        url=aurl[0];
        publishProgress(""+20,"Connecting...");
        HttpURLConnection c = (HttpURLConnection) u.openConnection();
        publishProgress(""+40,"Connecting...");
        c.setRequestMethod("GET");
        c.setDoOutput(true);
        c.connect();

        publishProgress(""+45,"Connecting...");
        publishProgress(""+40,aurl[0]);
        int lenghtOfFile = c.getContentLength();
        System.out.println(lenghtOfFile+"lenghtOfFile");

        is = c.getInputStream();
4

2 に答える 2

2

私は同じ問題に直面していて、簡単な解決策を見つけました。

//最初にデフォルトのCookieマネージャーを設定します。

CookieHandler.setDefault(new CookieManager(null、CookiePolicy.ACCEPT_ALL));

//以降のすべてのURLConnectionsは同じCookieマネージャーを使用します。

URLConnection接続=新しいURL(url).openConnection();

//..。

接続=新しいURL(url).openConnection();

//..。

接続=新しいURL(url).openConnection();

//..。

これは私が見つけた最も簡単な解決策です。デフォルトのCookieManagerを設定する必要があります。 java.net.URLConnectionを使用してHTTPリクエストを起動および処理することは、すばらしいブログです。

ありがとう

于 2012-12-18T09:59:04.527 に答える
1

URLに jseesioid を追加しても機能しませんでした..このソリューションを使用してコードが機能しました

httpsセッション管理

特にこの二人…

 // Gather all cookies on the first request.
URLConnection connection = new URL(url).openConnection();
List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
// ...

// Then use the same cookies on all subsequent requests.
connection = new URL(url).openConnection();
for (String cookie : cookies) {
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
 }
 // ...
于 2012-09-25T09:47:45.920 に答える