네트워크 : 2대 이상의 컴퓨터가 연결되어 데이터를 주고받는 통신 체계
HTTP = 프로토콜
프로토콜 : 컴퓨터 간의 데이터를 전송하는 방식이 서로 다르면 데이터를 주고받을 때마다 각 컴퓨터의 전송 방식에 맞게 코드를 수정해야함
프로토콜은 이런 전송 방식을 표준화한 통신 규약이다.
TCP/IP가 프로토콜이다.
웹은 HTTP라는 프로토콜을 사용하는 것
패킷 : 데이터가 전송되는 실제 단위
URL
프로토콜http://
서버 주소www.hanbit.co.kr
포트:80/
리소스 경로store/books/look.php
쿼리스트링?p_code=B6382321674
쿼리스트링 : 요청 주소의 뒤에 옵션 데이터를 붙여서 전달하는 방식
HTTP : 헤더와 바디로 구성
HTTP 메서드 : GET, POST, PUT, DELETE
GET : 서버의 정보 조회
헤더 - 주소, 정보 입력
바디 - 값X
DELETE : GET과 유사함
POST, PUT : 서버에 데이터를 저장하거나 수정하기 위한 용도로 사용
바디 - 데이터를 담아서 요청
HTTP 응답 코드 (서버에서 반환한 응답 코드)
1xx : 조건부 응답
2xx : 성공
3xx : 리다이렉션 완료
4xx : 클라이언트 요청 에러
5xx : 서버 에러
HttpURLConnection
안드로이드는 HTTP로 데이터 통신을 하기 위해서 HttpURLConnection 클래스와 HTTPS 사양으로 확장한 HttpsURLConnection 클래스를 지원한다.
[실습 - 서버에 요청을 보내면 해당 서버의 내용을 TextView로 출력]
binding.buttonRequest.setOnClickListener {
CoroutineScope(Dispatchers.IO).launch { //코루틴
try {
var urlText = binding.editUrl.text.toString() //입력 받은 값 저장해놓기
if (!urlText.startsWith("https")) { //https붙어있지 않은 경우에는 앞에 https 붙여주기
urlText = "https://${urlText}"
}
val url = URL(urlText) // 주소를 URL 객체로 변환 후 url이라는 변수에 저장
val urlConnection =
url.openConnection() as HttpsURLConnection // openConnection()함수를 통해 서버와의 연결을 생성
urlConnection.requestMethod = "GET" //연결된 커넥션에 요청 방식을 설정, 대문자로 입력
if (urlConnection.responseCode == HttpURLConnection.HTTP_OK) { // 응답이 정상일 때
val streamReader =
InputStreamReader(urlConnection.inputStream) //입력 스트림(데이터를 읽어오는 스트림) 연결
val buffered = BufferedReader(streamReader) //버퍼에 담아서 데이터를 읽은 준비
val content = StringBuilder() //StirngBuilder
while (true) {
val line = buffered.readLine()
?: break //반복문 돌면서 한 줄씩 읽은 데이터를 content 변수에 저장
content.append(line)
}
//사용한 스트림과 커넥션 해제
buffered.close()
urlConnection.disconnect()
launch(Dispatchers.Main) {
binding.textContent.text = content.toString()
}
}
} catch (e: Exception){
e.printStackTrace()
}
}
}


Retrofit 라이브러리
HttpUrlConnection보다 편하게 적은 양의 코드로 데이터 통신을 할 수 있게 도와준다.
레트로핏 공식 사이트 : https://square.github.io/retrofit/
어떤 데이터 형식을 사용할 것인지가 중요 !! -> 프로토콜이 정해지면 해당 프로토콜에 대한 공부가 선행되어야 한다.
사용자 정보 API를 무료로 제공하는 Github API
데이터 형식 : 주로 JSON을 많이 사용한다.
JSON의 구조
- 세 가지 형태의 조합으로 구성되어 있다.
1. JSON 오브젝트
2. JSON 데이터
3. JSON 배열
JSON 오브젝트
JSON 객체는 {}안에 담긴다.
JSON 데이터
{ "데이터 이름": "값", "데이터2 이름": "값2" }
문자 - "데이터 이름": "값"
숫자 - "데이터 이름": 123
불린 - "데이터 이름": true
null - "데이터 이름": null
JSON 객체 - "데이터 이름": { }
JSON 배열 - "데이터 이름": [ ]
JSON 배열
[ {"데이터1 이름", "값"}, {"데이터1 이름": "두 번째 값", "데이터2 이름": 123} ]
'안드로이드' 카테고리의 다른 글
UMC 안드로이드 스터디 4주차 (0) | 2022.04.05 |
---|---|
UMC 안드로이드 스터디 4주차 (0) | 2022.04.04 |
UMC 안드로이드 스터디 3주차 (0) | 2022.03.28 |
UMC 안드로이드 스터디 2주차 (0) | 2022.03.22 |
UMC 안드로이드 스터디 1주차 (0) | 2022.03.14 |