Http 네트워크 통신의 가장 기본이 되는 HttpUrlConnection은 Java에서 제공하는 클래스로, HTTP 통신에 필요한 메서드들을 제공한다. 네트워크 작업할 땐 Retrofit, Okhttp 등을 사용하기 때문에 직접적으로 HttpUrlConnection을 사용할 일은 매우 적겠지만 어떻게 사용하는지 간단하게 알아보자.
1. URL 연결
val url = URI(URL).toURL()
val httpUrlConnection = url.openConnection() as HttpURLConnection
httpUrlConnection.apply {
connectTimeout = 5000
requestMethod = "GET"
doInput = true
}
URL.openConnection으로 HttpURLConnection 객체를 얻는다.
해당 객체에서 다양한 속성들을 정의할 수 있는데, 대표적인 속성은 다음과 같다.
- connectTimeout: 연결에 걸리는 최대 시간을 정의, 해당 시간이 초과하면 연결 실패
- requestMethod: HTTP 메서드 / GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE
- doInput: 서버에서 컨텐츠를 읽는데 사용할 수 있는지의 여부
2. 데이터 받아오기
try {
if(httpUrlConnection.responseCode == HttpURLConnection.HTTP_OK){
val inputStream = httpUrlConnection.inputStream
val streamReader = InputStreamReader(inputStream)
val buffered = BufferedReader(streamReader)
buildString {
buffered.use { buf ->
while(true){
val line = buf.readLine() ?: break
append(line)
}
}
}
}
return null
} catch (e: Exception) {
println(e.message)
return null
} finally {
httpUrlConnection.disconnect()
}
다음과 같이 HTTP 통신을 요청하고, 데이터를 받아올 수 있다. 하지만 HTTP 통신은 위처럼 간단한 구조만 있는 것이 아닌 HTTP 메서드 별 구조와 데이터 전송 방법(Query, Form-Data 등) SSL/TLS, 헤더, Response 데이터의 구조가 Json인지 XML인지 등 상황마다 다른 다양한 설정 및 조건들이 존재한다.
Retrofit과 Okhttp와 같은 라이브러리를 사용하면 이러한 복잡한 작업들을 간단하게 처리할 수 있다.
'안드로이드 > Network' 카테고리의 다른 글
Retrofit (0) | 2025.05.15 |
---|---|
OkHttp (0) | 2025.05.13 |
[안드로이드] 서버 통신 Retrofit2 (0) | 2023.11.06 |