2012-05-08 5 views
0

다른 활동에서 동일한 HttpClient 인스턴스를 사용하려고했지만 작동하지 않았습니다. 그래서 한 번의 활동을 시도하고 HttpClient를 사용하여 로그인 한 다음 로그인이 성공하면 로그 아웃하기로 결정했습니다. 이것은 모두 동일한 활동에 있으므로 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 또는 내 코드에 문제가 있습니까?

편집 : Eric의 답변에 대한 응답입니다.

이미 쿠키이 시도했다 : 쿠키는 기본적으로 활성화되지 않기 때문이다

response = client.execute(request, httpContext); 

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

합니까의 서버 구현에 문제가 온 것처럼

이 보이는 (주석 참조)이 질문에 설명 된대로있는 HttpContext를 사용할 필요가 서버가 https 대신 http 모드에 응답하므로 https 관리에서 오는 문제점을 배제 할 수 있습니까? 또한, 예를 들어 curl을 사용하여 성공적으로 세션을 시뮬레이션 했습니까? 그렇다면 서버가 제대로 작동하는지 확인할 수 있습니까? – EricLarch

+0

HTTP가 도움이되지 않았습니다. 필자는 Fiddler를 사용하여 내 http 요청을 작성했습니다. 이 방법으로 로그인 할 수는 있지만 그 이후에는 아무 것도 할 수 없습니다. 왜냐하면 "로그인하지 않았습니다"라는 응답이 나오기 때문입니다. URL은 모바일 버전입니다. 필자는 Fiddler를 사용하여 모바일 사이트가 아닌 기본 사이트에서 요청을 생성 할 수 있습니다. 로그인 할 때만 사용할 수있는 페이지로 이동할 수 있습니다. 이것이 모바일 웹 사이트의 PHP가 세션을 올바르게 유지하지 못하는 이유입니다. PHP에 대한 액세스 권한이 없지만 문제가 될 수 있다고 생각되는 사람에게 요청할 수 있습니다. – Ryan

+0

그러면 모바일이 아닌 URL을 사용해보세요. Android 코드가 올바른지 알 수 있습니다. 기본 URL을 사용하여 코드를 통해 비공개 페이지에 액세스 할 수있는 경우 모바일 버전에서 문제가 발생했는지 확인할 수 있습니다. – EricLarch

답변

0

:

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

그런 다음 컨텍스트를 포함 위에서 각 응답을 변경했습니다. 협의 후 How do I manage cookies with HttpClient in Android and/or Java?


편집 오류가 인증 프로세스

+0

이미 쿠키를 사용해 보았습니다. 나는 내가 시도한 것을 보여주기 위해 나의 질문을 업데이트했다. – Ryan

+0

수정하십시오. PHP가 문제였습니다. 위의 코드는 HttpContext가 사용될 때 올바르게 작동합니다. – Ryan

관련 문제