안녕하세요~
오늘은 제가 어플을 만들면서 안드로이드 스튜디오에서 서버 연동 할때, PHP 데이터 주고 받을때 상황에 따른 팁을 알려드리려고 해요! 물론 제 경험입니다 ㅎㅎ..
먼저 저는 AsyncTask 함수를 이용하여 서버 연동을 했어요~ 그 이유는 뭔가 정석적이면서 안정적인 느낌이 있어서 해당 함수를 사용해서 연동을 했습니다 ~ 함수안에 라이브러리도 많구요 ~
AsyncTask에는 여러 함수가 있죠.
기본적으로 execute() 에서 받는 인자를 나열하는 함수 : doInBackground (String ... param)함수
실행 했을때, 해당 URL 서버에서의 결과값을 받는 함수 : onPostExecute(String result) 함수
그냥 시작할때 사용되는 함수 : onPreExecute() 함수
이 3개 함수가 서버연동시에 가장 대표적인 함수에요~
뭐 사용 방법은 구글 같은곳에 많으니 필요시 사용하는건 무리 없다고 저는 기대합니다 !
자 ! 제가 알려드리고 싶은건 오류는 없는데 적용이 잘 안될때 에 대한 확인 방법을 알려드릴게요!
저게 원리는 이해하면 간단한게 모든 프로그램 연동이 그렇듯 다른 프로그램과 연동을 할때 예상치 못한 오류가 항상 발생하죠 ~~ ㅠㅠ
이럴때, AsyncTask 함수에서는 단계별로 확인을 해줘야 쉽고 빠르게 오류 원인을 찾을 수 있습니다!
자.
첫번째 팁 ! 먼저 처음 실행할때의 인자값들이 AsyncTask 함수에 잘 들어갔는지 확인합니다.
방법은 doInBackground 함수에서 인자를 받아들이는 변수를 Log.d()로 잘 들어갔는지 확인해보세요.
Log.d 는 디버깅의 약자 d 를 사용해서 Log 쳇에 디버그 필어로 해서 보기 편하게 하여 확인하면 됩니다.
두번째 팁 ! 안드로이드 스튜디오의 코드 정확성과 는 별개로 서버측 코드도 오류가 없는지 확인해 봅니다!
가장 좋은 방법은 echo를 이용한 방법이죠! 서버측 오류가 없다면 ehco 원하는 값을 출력할 수 있을겁니다.
세번째 팁! 첫번째, 두번째에 문제가 없다면 , AsyncTask 에서 서버측 결과를 받는 함수 onPostExecute 함수를 이용합니다. onPostExecute(String result) 에서 result 는 서버측 에서 출력된 모든 값들을 문자열로 받아들이는 기능이 있습니다. 예를 들어 서버 페이지 에서 echo "안녕" 을 해서 출력이 된다면, result에 "안녕"이 문자열로
저장이 됩니다. 아주 좋은 함수죠~? 이 result 값은 서버의 출력값을 그래도 보여주는 것이니, 서버 결과와 같은 값이 나오면 연동이 잘 된것입이다.
result값도 Log.d() 를 이용하여 확인 하고 오류 여부를 확인하면 됩니다~
제가 며칠동안 고생했던 부분에서의 오류 원인은
인코딩 부분이었는데, 전체 데이터중 일부분만 인코딩이 잘 안된건데도 모든데이터 전송이 안됬었습니다.
이 오류를 계속 못찾으니 헛바퀴 돌듯이 이상한 것들만 수정하고 했엇죠.. ㅠㅠ
이럴때, 위의 3가지 팁을 이용해서 인코딩이 안된 부분만을 찾아서 고치니 바로 잘 되었어요~
개발자, 코딩을 하는 여러분들 오류는 필수적으로 날수밖에 없잖아요~
저희에게 가장 필요한건
오류를 가장 효율적으로 빨리 찾는 방법 인것 같아요~ 우리 개발자들은 대단해서 오류 부분을 찾기만 하면 해결하기는 쉽잖아요~ 그쵸~!!
인류 발전을 위해 계속 노력할게요~ 담음에 봐요~
궁금한거 있으면 댓글 달아주세요~ 좋아요도 감사해요!!
'IT기술(코딩)' 카테고리의 다른 글
안드로이드 스튜디오 앱등록 사기행위 대처방법(Google Play 정책을 준수하지 않음) 사기행위로 인한 등록 취소 (0) | 2020.08.02 |
---|---|
안드로이드 스튜디오 서버연동 Runnable사용 (HttpURLConnection 함수) 예제 (0) | 2020.08.02 |
안드로이드 스튜디오 , mysql 연동 (0) | 2020.08.02 |
안드로이드 스튜디오 그리드뷰[grid view], 리스트뷰[list view], 스레드[thread] ,AsyncTask 의 사용 용도. (0) | 2020.08.02 |
안드로이드 스튜디오 개인 앱 제작 [버튼 이벤트] (0) | 2020.08.02 |