2011-01-29 10 views
0

기본적으로 나는 사용자가 자신의 사용자 이름과 암호를 입력 할 수있게 해주는 양식을 내 안드로이드 응용 프로그램에 가지고 있으며 이것은 PHP 온라인에서 작성된 매우 간단한 로그인 페이지로 게시됩니다. 그런 다음 XML 파일에서 데이터를 가져 오는 두 번째 페이지에 액세스해야합니다.이 페이지에 액세스하려면 사용자가 로그인해야합니다. 사용자가 보는 xml 페이지는 사용자 이름에 따라 다릅니다. 내 로그인 페이지에서android에서 웹 사이트에 로그인

나는 if 문 간단한 사용에 사용자가 로그인하면 내가 확인

<?php 
session_start(); 
?> 

하고이 로그인을 확인하여 각 페이지의 시작 부분에서

session_start(); 
session_register("username"); 

if(!session_is_registered("username")){?> 
display whatever 

else bla 

어떻게 내 안드로이드 응용 프로그램에서이 작업을 수행 할 수 있습니까? 로그인 한 후 xml 페이지로 이동할 수 없습니다. 로그인 한 것으로 인식하지 못하기 때문에

답변

0

단일 검색 인 경우 왜 세션을 귀찮게합니까? 응용 프로그램에서 사용자 자격 증명을 사용하여 요청에 대한 직접 응답으로 웹 사이트에 XML 파일을 제공하십시오.

어떤 이유로 세션을 사용해야하는 경우 세션 ID에 대한 POST 요청에 대한 응답을 검색하고 XML 데이터 요청과 함께 세션 ID를 제공해야합니다. 세션 ID는 쿠키에있을 가능성이 높으며 페이지의 하이퍼 링크에있을 수도 있습니다 (로그인 설정 방법에 따라 다름).

+0

그래서 당신의 말은 내가 성공적으로 XML을 검색 할 응용 프로그램에 대한 별도의 로그인을 가질 수 있습니까? 내 xml 리더를 try/catch 또는 다른 것으로 stick하고 로그인에 실패하면 오류가 표시됩니까? 그렇게 생각하지 마십시오. –

1

먼저 웹 브라우저를 사용하여 로그인을 수행하여 제대로 작동하는지 확인하십시오. 그런 다음 동일한 작업을 다시 수행하고 Live Http Headers 또는 Charles Proxy과 같은 것을 사용하여 요청 및 응답 헤더를 검사합니다. 성공적인 로그인 후에 앞뒤로 어떤 종류의 세션 쿠키가 전달 될 것이라고 생각합니다. 성공적인 로그인 응답에서 쿠키를 읽고 XML 페이지 요청과 함께 다시 보내야합니다.

편집
HttpClient를 사용하여 쿠키 게시물을 수행하고 다른 this thread에 내 질문과 대답 HttpsUrlConnection를 사용하는 간단한 예제가있다.

0

PHP 세션은 쿠키로 구현됩니다. session_start()을 호출 할 때마다 응답에는 PHP 세션 ID가 포함 된 브라우저 쿠키를 설정하는 Set-Cookie 헤더가 포함됩니다. 기본적으로 쿠키의 이름을 session.name PHP configuration option으로 변경하지 않은 경우 쿠키의 이름은 PHPSESSID입니다.

사용자를 로그인 한 후 세션 ID가 포함 된 Cookie 헤더를 사용하여 후속 요청을 실행해야합니다. 각 요청을 제출하기 전에 사용자를 로그인하는 데 사용 된 CookieStore 개체를 다시 사용하기 만하면됩니다 (새 HttpClient 인스턴스의 경우 AbstractHttpClient#setCookieStore).

0

기본적으로 안드로이드에서 httpclient libs를 사용하여 프로그래밍 방식으로 게시물을 수행하고 응답 (set-cookie headeR)에서 세션 쿠키를 가져 와서 해당 쿠키를 서버에 대한 후속 요청에 포함해야합니다.

당신은 this처럼 게시물을 수행하는 데 httpclient를 사용하는 방법에 대해 Google을 수행 할 수 있습니다. here's httpclient를 사용하여 요청에 쿠키를 삽입하는 예제입니다. 몇 가지 javadocs를 읽게하거나 함께 넣을 예제를 더 찾도록하겠습니다.

관련 문제