0

さまざまなアクティビティで同じHttpClientインスタンスを使用しようとしましたが、機能しませんでした。そこで、1つのアクティビティを試して、HttpClientを使用してログインし、ログインが成功したらログアウトすることにしました。これはすべて同じアクティビティに含まれるため、HttpClientは確実にセッションを正しく維持する必要がありますか?

HttpClient client = new DefaultHttpClient();
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
    postParameters.add(new BasicNameValuePair(UN_ID, username));
    postParameters.add(new BasicNameValuePair(PW_ID, password));

HttpPost request = new HttpPost(URL);

formEntity = new UrlEncodedFormEntity(postParameters);

request.setEntity(formEntity);

response = client.execute(request);

応答が正常なログインである場合、私はログアウトしようとします:

if (responseCode.equals("101")){ //successful
        HttpGet g = new HttpGet("https://site.com/file.php?logout=1");
        HttpResponse r = client.execute(g);

これにより、「ログインしていません」という応答が返されます。これはサーバー、HttpClient、または私のコードの問題ですか?

編集:エリックの答えへの応答。

私はすでにこれをクッキーで試しました:

CookieStore cookieStore = new BasicCookieStore();
    httpContext = new BasicHttpContext();
    httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

次に、各応答を上記から変更して、コンテキストを含めます。

response = client.execute(request, httpContext);

HttpResponse r = client.execute(g, httpContext);
4

1 に答える 1

0

これは、Cookie がデフォルトで有効になっていないためです。この質問で説明されているように、HttpContext を使用する必要があります: How do I manage cookies with HttpClient in Android and/or Java?


ディスカッション後に編集 (コメントを参照)

認証プロセスのサーバー実装の問題からエラーが発生したようです

于 2012-05-08T15:26:08.810 に答える