본문 바로가기

안드로이드/Network

HttpUrlConnection

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