안드로이드 스튜디오 로그인 세션 유지 - andeuloideu seutyudio logeu-in sesyeon yuji

	
	 �ȵ���̵�  > HttpClient - HttpPost() �� �̿��� �α��� ���� ��� 

	������ HttpPost() �޼��带 �̿��� �α��� �� ���� ���� ����� �˾ƺ����� �ϰڽ��ϴ�.

	AndroidManifest.xml ���� permission �� �Ʒ�ó�� �߰��� ��� ������?
	

안드로이드 스튜디오 로그인 세션 유지 - andeuloideu seutyudio logeu-in sesyeon yuji
���� �̹��� ó�� �α��� �������� �ϱ� ���� main.xml ������ �������� ��� �մϴ�. layout/main.xml

������ ����� string ������ ����Ǿ�� ����. values/string.xml

LoginTest �α����� ���ּ��� ���̵� : ��й�ȣ : �α��� ����1 ����2

���� ��ư�� �������� ���� �������� ������ webView�� ��� ��Ƽ��Ƽ�� �ϳ� �߰��մϴ�. layout/webview.xml

���� java �ҽ������� ������ �ϰڽ��ϴ�. LoginTestActivity.java SessionControl.java WebViewTest.java 3���� ������ �ʿ��մϴ�. src/LoginTestActivity.java

public class LoginTestActivity extends Activity { /** Called when the activity is first created. */ EditText et_id; EditText et_pw; TextView tv_msg; private static String id = ""; private static String pw = ""; private static String msgString = null; private static boolean isConnected = false; @Override public void onCreate(Bundle savedInstanceState) { StrictMode.enableDefaults(); super.onCreate(savedInstanceState); setContentView(R.layout.main); et_id = (EditText) findViewById(R.id.edit_id); et_pw = (EditText) findViewById(R.id.edit_pw); tv_msg = (TextView) findViewById(R.id.text_msg); Button btn_web = (Button) findViewById(R.id.btn_web); btn_web.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(LoginTestActivity.this, WebViewTest.class); startActivity(intent); } }); final Button btn_login = (Button) findViewById(R.id.btn_login); btn_login.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { id = et_id.getText().toString(); pw = et_pw.getText().toString(); sendPostRequest(id,pw); } }); } private void sendPostRequest(String user_id, String user_pwd) { class SendPostReqAsyncTask extends AsyncTask { @Override protected String doInBackground(String... params) { String user_id = params[0]; String user_pwd = params[1]; Log.v("TAG","��׶��� �۾� user_id=" + user_id + " user_pwd=" + user_pwd); //HttpClient httpClient = new DefaultHttpClient(); HttpClient httpclient = SessionControl.getHttpclient(); //���� HttpPost httpPost = new HttpPost("http://ankyu.entersoft.kr/logintest.asp"); // �������� �ּҷ� ������ �� BasicNameValuePair username = new BasicNameValuePair("user_id", user_id); // ������ ���α׷��� ���� �޶����� ���� BasicNameValuePair password = new BasicNameValuePair("user_pwd", user_pwd); // ����Ʈ�� ������ ���� List nameValuePairList = new ArrayList(); nameValuePairList.add(username); nameValuePairList.add(password); try { UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList,"UTF-8"); httpPost.setEntity(urlEncodedFormEntity); try { HttpResponse httpResponse = httpclient.execute(httpPost); InputStream inputStream = httpResponse.getEntity().getContent(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder stringBuilder = new StringBuilder(); String bufferedStrChunk = null; while((bufferedStrChunk = bufferedReader.readLine()) != null){ stringBuilder.append(bufferedStrChunk); } // �α��� ������ ��Ű�� �������� SessionControl.cookies = SessionControl.httpclient.getCookieStore().getCookies();//�߰� //�о�� ��Ű���� �ѹ� ��� �Ͽ� ����. Cookie cookie; if (!SessionControl.cookies.isEmpty()) { for (int i = 0; i < SessionControl.cookies.size(); i++) { cookie = SessionControl.cookies.get(i); Log.v("TAG","===>>>"+ cookie.toString() ); } } Log.v("TAG",stringBuilder.toString()); ///// �̰����� �������� ������ �޽����� Ȯ���� �� �� �ִ�.. //����/���� ���ο� ���� ������ ��������. return stringBuilder.toString(); } catch (ClientProtocolException cpe) { Log.v("TAG","First Exception caz of HttpResponese :" + cpe); cpe.printStackTrace(); } catch (IOException ioe) { Log.v("TAG","Second Exception caz of HttpResponse :" + ioe); ioe.printStackTrace(); } } catch (UnsupportedEncodingException uee) { Log.v("TAG","An Exception given because of UrlEncodedFormEntity argument :" + uee); uee.printStackTrace(); } return null; } protected void onPostExecute(String result) { super.onPostExecute(result); } } ////////////////////////////////// // �̰����� �α����� ���� �������� �񵿱� ��׶���� ��û�Ѵ�. SendPostReqAsyncTask sendTask = new SendPostReqAsyncTask(); sendTask.execute(user_id, user_pwd); // �񵿱� ��� ��׶���� �޾� ����..... /////////////////////////////////// } }

src/SessionControl.java

public class SessionControl { static public DefaultHttpClient httpclient = null; static public List cookies; public static HttpClient getHttpclient() { if( httpclient == null){ SessionControl.setHttpclient(new DefaultHttpClient()); } return httpclient; } public static void setHttpclient(DefaultHttpClient httpclient) { SessionControl.httpclient = httpclient; } }

src/WebViewTest.java

public class WebViewTest extends Activity { String myUrlAddress ="http://ankyu.entersoft.kr/login_test1.asp"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); WebView wv = (WebView) findViewById(R.id.webview_test); ///////////////// �߰��� �κ� ///////////// Cookie sessionCookie =null; try { if(!SessionControl.cookies.isEmpty()) { sessionCookie=SessionControl.cookies.get(0); CookieSyncManager.createInstance(this); CookieManager cookieManager = CookieManager.getInstance(); if (sessionCookie != null) { cookieManager.removeSessionCookie(); String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain(); cookieManager.setCookie(myUrlAddress, cookieString); CookieSyncManager.getInstance().sync(); } } }catch(Exception e){ e.printStackTrace(); }finally { } ///////////////// wv.loadUrl(myUrlAddress); wv.setWebChromeClient(new WebChromeClient()); wv.getSettings().setJavaScriptEnabled(true); wv.setInitialScale(1); wv.getSettings().setLoadWithOverviewMode(true); wv.getSettings().setUseWideViewPort(true); wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); wv.setScrollbarFadingEnabled(false); wv.setWebViewClient(new InfoWebViewClient()); } public void onResume() { super.onResume(); CookieSyncManager.getInstance().startSync(); } public void onPause() { super.onPause(); if (CookieSyncManager.getInstance() != null) { CookieSyncManager.getInstance().stopSync(); } } private class InfoWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //if (Uri.parse(url).getHost().equals("www.example.com")) { // This is my web site, so do not override; let my WebView load the page //return false; //} view.loadUrl(url); // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs //Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); //startActivity(intent); return true; } //WebView�� �ε��� ������ ���� public void onPageFinished(WebView view, String url){ CookieSyncManager.getInstance().sync(); } } }

������ ���α׷��� �α���������, ������ Ȯ���� �� �ִ� �������� ���� �׽�Ʈ �� ���ñ� �ٶ��ϴ�.
������Ʈ ��ü�ҽ��� ÷���մϴ�.
안드로이드 스튜디오 로그인 세션 유지 - andeuloideu seutyudio logeu-in sesyeon yuji
LoginTest.zip