Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

에이치의 모바일 앱 개발

RESTful api란 본문

Android/Android 개발 소스

RESTful api란

로이누리 2018. 4. 15. 22:40

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
Comments