さまざまなアクティビティで同じ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);