안드로이드에서 서버로 이미지를 전송하기 위해 REST API로 통신 하는 과정에서 시간이 오래 걸려 Android Client에서 connection Error로 인식해 오류가 발생 했습니다. Retrofit은 기본적인 네트워크 타임아웃 설정을 가지고 있지만 다양한 상황에서 기본 타임아웃 시간을 변경해야 합니다.
Retrofit의 기본 타임아웃 시간 설정값
- Connection timeout : 10초
- Read timeout : 10초
- Write timeout : 10초
Connection Timeout
네트워크 요청을 시작한 후 서버와의 TCP handshake가 완료되기까지 지속되는 시간으로 Retrofit이 설정된 연결 시간 제한 내에서 서버에 연결할 수없는 경우 해당 요청을 실패한 것으로 계산합니다. 이는 클라이언트가 서버와의 연결을 설정하고 완료하기 위해 10초 동안 대기하는 것을 의미합니다. 그러나 네트워크 환경이 좋지 않은 경우에는 이 기본 값이 부족할 수 있습니다. 사용자의 인터넷 연결 상태가 좋지 않을 때, 더 긴 시간을 설정하여 서버에 연결할 수 있도록 대기하는 시간을 늘릴 수 있습니다. 이를 통해 클라이언트는 좀 더 많은 시간 동안 서버와의 연결을 시도할 수 있게 됩니다.
Read Timeout
서버가 클라이언트에게 응답을 완료하고 모든 데이터를 전송하는 데까지 대기할 최대 시간을 나타냅니다.
Write Timeout
클라이언트가 서버로 데이터를 보내는 데 걸리는 최대 시간을 나타냅니다.
private var okHttpClient: OkHttpClient = OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.MINUTES)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build()
private val client: Retrofit = Retrofit
.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build()
'Android' 카테고리의 다른 글
Android Runtime Permission (1) | 2023.12.17 |
---|---|
OkHTTP httpLoggingInterceptor (0) | 2023.12.15 |
안드로이드 HTTP 보안 정책 (0) | 2023.12.14 |
Android Network Programming 2 (0) | 2023.12.14 |
Android Network Programming 1 (0) | 2023.12.13 |