[Kotlin] 10장. 앱 개발 - 네트워크

Hwichan Ji·2020년 12월 29일
1

Kotlin

목록 보기
10/11
post-thumbnail

이것이 안드로이드다 with 코틀린(고돈호 지음) 으로 공부한 내용을 정리한 글입니다.

네트워크

HTTP

프로토콜

프로토콜은 데이터 전송 방식을 표준화하여 어떤 기기와도 동일한 방식으로 데이터를 주고받을 수 있게 만들어진 통신 규약입니다.

패킷

패킷은 데이터가 전송되는 단위입니다. 데이터는 패킷 단위로 나뉘어 전송됩니다.

HTTP

HTTP는 웹상의 서버와 클라이언트인 웹브라우저의 데이터 통신이 가능하도록 설계된 표준 규약입니다. 클라이언트가 서버에 데이터를 요청하는 요청 메시지를 보내면 서버는 클라이언트가 요청한 데이터를 클라이언트로 보내는 응답 메시지를 보냅니다.

URL 구조

프로토콜서버주소포트리소스 경로쿼리
http://www.hanbit.co.kr:80/store/books/look.php?p_code=B63

HTTP 구조

구분예시설명
헤더GET ../images/myface.php...HTTP/1.1명령
바디"id":24185231, "name":"kil_dong"실제 데이터

HTTP 요청 메서드

HTTP 요청 메서드설명
GET지정한 URI의 리소스를 요청
POST요청과 데이터를 담아 전송하면 해당 URI에 리소스를 생성
PUT지정한 URI의 리소스를 수정
DELETE지정한 URI의 리소스를 삭제
HEAD리소스 존재 여부 혹은 서버 상태를 확인하기 위해 헤더 정보를 요청
TRACE서버 상태를 확인하기 위해 클라이언트의 요청을 그대로 반환
OPTIONS웹서버가 지원하는 메소드의 종류를 요청

HTTP 응답(상태) 코드

HTTP 응답 코드설명
1xx (정보 전달)요청을 받았고 작업을 진행 중이라는 의미
2xx (성공)요청을 받았고 이해했으며 받아들여졌다는 의미
3xx (리다이렉션)요청의 완료를 위해서는 리다이렉션해야 한다는 의미
4xx (클라이언트 오류)요청이 올바르지 않다는 의미
5xx (서버 오류)올바른 요청에 대해 서버가 응답할 수 없다는 의미

HttpURLConnection 클래스

HttpURLConnection 클래스는 안드로이드에서 HTTP로 데이터 통신을 하기 위해서 사용하는 클래스입니다.

fun networking(urlString: String) {
    thread(start=true) {
        // 네트워킹 예외처리를 위한 try ~ catch 문
        try {
            val url = URL(urlString)

            // 서버와의 연결 생성
            val urlConnection = url.openConnection() as HttpURLConnection
            urlConnection.requestMethod = "GET"

            if (urlConnection.responseCode == HttpURLConnection.HTTP_OK) {
                // 데이터 읽기
                val streamReader = InputStreamReader(urlConnection.inputStream)
                val buffered = BufferedReader(streamReader)

                val content = StringBuilder()
                while(true) {
                   val line = buffered.readLine() ?: break
                   content.append(line)
                }
                // 스트림과 커넥션 해제
                buffered.close()
                urlConnection.disconnect()
                runOnUiThread {
                    // UI 작업
                }
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
}

JSON

JSON은 데이터 교환에 사용하는 표준 데이터 형식입니다. 사람과 컴퓨터가 이해하기 쉬우면서 데이터 용량이 적다는 장점이 있습니다.

JSON 구조

JSON은 JSON 오브젝트, JSON 데이터, JSON 배열의 조합으로 구성되어 있습니다.

  1. JSON 오브젝트: {JSON 데이터}의 형태를 가짐

  2. JSON 데이터: "데이터1 이름": 값1, "데이터2 이름": 값2의 형태를 가짐

    데이터 형식이름: 값 표현
    문자"이름": "값"
    숫자"이름": 123
    불린"이름": true
    null"이름": null
    JSON 객체"이름": {}
    JSON 배열"이름": []
  1. JSON 배열: [JSON 오브젝트1, JSON 오브젝트2]의 형태를 가짐. JSON 오브젝트의 모양이 모두 같을 필요는 없지만 같은 이름을 가진 데이터의 타입은 동일해야 합니다.
profile
안드로이드 개발자를 꿈꾸는 사람

0개의 댓글