에이치의 모바일 앱 개발
RESTful api란 본문
REST는 Representational State Transfer의 약자로 2000년도 로이 필딩의 박사학위 논문에서 최초로 공개되었습니다.
당시 HTTP 웹이 대중으로 확산되는 가운데 웹의 성능 향상을 위해 연구가 되었습니다.
앱 개발 과정을 보이며 설명을 하도록 하겠습니다.
아시다시피 안드로이드는 UI 및 이벤트를 관할하는 메인스레드가 있습니다.
먼저 REST API 사용을 위해 스레드를 생성해줍니다.
AsyncTask.execute(new Runnable() {
public void run() {
}
});
참고 : AsyncTask 는 스레드 종류 중 하나로 UI와 별개로 비동기로 작동하게 할 수 있습니다.
이하 run 메소드 내부 코드 설명으로 알려드리겠습니다.
URL 라이브러리를 사용하여 HTTP 통신을 작성해 보겠습니다.
URL minibot119 = new URL("minibot119.tistory.com);
HttpURLConnection mConnection = (HttpURLConnection) minibot119.openConnection();
웹 호출시 서버에 특정 내용을 넘길 수 있습니다.
다음과 같은 방식을 사용합니다.
mConnection.setRequestProperty("User-Agent", "restTester");
mConnection.setRequestProperty("Accept", "json+application");
위와같이 헤더에 요청인자를 넘기는 선택적인 과정 및 Connection 이 후 결과를 받을 때는 응답코드를 받습니다.
서버에서 제시한 연결상태 코드가 아닌 HTTPURLConnection 에서 제공하는 서버연결상태 확인 코드를 사용합니다.
if (mConnection.getResponseCode() = 200) {
} else {
}
HTTP 상태코드는 구글 검색을 통해 몇가지 기억을 해두시면 좋습니다.
200코드는 연결이 완료되었다는 의미입니다.
이제 데이터를 가져와야합니다.
InputStream mInputstream = mConnection.getInpitStream();
InputStreamReader mInputstreamreader = new mInputstreamreader(mInputstream, "UTF-8");
데이터를 UTF-8 형식으로 가져오는데, euc-kr와 달리 다국어 목적으로 대부분 공통으로 쓰이기에 이를 사용합니다.
REST API는 xml 형식 보단 json 형식을 더 선호합니다.
따라서 InputStream에서 직접 데이터를 얻기보단 Reader를 통해 데이터 획득합니다.
다음과 같이 Json 서식의 문서를 읽어줍니다.
JsonReader mJsonReader = new JsonReader(mInputsteamreader);
while (mJsonReader.hasNext()) {
String key = mJsonReader.nextName();
if (key.equalse("hostname")) {
Log.i(mJsonReader .nextString());
break;
} esle {
mJsonReader.skipValue();
}
}
mJsonReader.close();
mConnection.disconnect();
사실 상 Json 구조를 String 형식으로 가져와 Json 형변환하면 됩니다만, Json 구조 오류에 대한 예외처리는 들어가야 합니다.
'Android > Android 개발 소스' 카테고리의 다른 글
View-TextView-link (0) | 2019.02.18 |
---|---|
롬곡 코드 (0) | 2018.09.21 |
Android 개발 패턴 MVC, MVP, MVVP (0) | 2018.04.01 |
NumberFormat 숫자->금액 (0) | 2017.12.23 |
ScrollView (0) | 2017.12.23 |