투케이2K

208. (TWOK/WORK) [업무 이슈] 안드로이드 HTTP 폴링 조회 시 인터넷 사용 불가능한 와이파이에 자동 연결 되어 (SoftAp) HTTP 요청이 지속 실패 되는 이슈 본문

투케이2K 업무정리

208. (TWOK/WORK) [업무 이슈] 안드로이드 HTTP 폴링 조회 시 인터넷 사용 불가능한 와이파이에 자동 연결 되어 (SoftAp) HTTP 요청이 지속 실패 되는 이슈

투케이2K 2026. 4. 9. 19:35
728x90
반응형

[제 목]

주제 : 투케이2K 업무 정리

타이틀 : 투케이 / 2k / 업무 정리

제목 : [업무 이슈] 안드로이드 HTTP 폴링 조회 시 인터넷 사용 불가능한 와이파이에 자동 연결 되어 (SoftAp) HTTP 요청이 지속 실패 되는 이슈

 

[내 용]

------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------

- 제 목 : [업무 이슈] 안드로이드 static 변수 선언 한 휘발성 데이터 유실로 데이터 null 전송 이슈


- 테스트 환경 : Android / Java


- 사전) 👉 HTTP 폴링 조회 간략 설명 : 

  >> HTTP 폴링 조회는 클라이언트가 일정한 주기로 서버에 HTTP 요청을 보내서 상태나 데이터를 확인하는 방식입니다.    

  >> HTTP 폴링 조회는 클라이언트가 주기적으로 “변경된 거 있어?” 라고 서버에 물어보며, 주로 GET 요청 형태로 사용됩니다.

  >> HTTP 폴링 조회 동작 흐름 : 

   --------------------------
    Client            Server
   --------------------------
    |  ---- 요청 ---->   |
    |  <--- 응답 ----    |
         (잠시 대기)
    |  ---- 요청 ---->   |
    |  <--- 응답 ----    |
   --------------------------

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------

1. 안드로이드 http 통신 api 폴링 호출 시 폴링 중간에 인터넷 사용 불가능한 와이파이에 자동 연결 되어 지속적으로 폴링 조회가 실패하는 이슈 발생


2. ☑️ 안드로이드 http 통신 api 폴링 수행 시 로직 : 

  >> 안드로이드 폴링 API 호출 시 서버 응답 에러 코드가 내려오거나, 비정상 데이터가 내려오더라도 지정 된 횟수 만큼 HTTP 호출 수행

  >> 폴링을 수행하며, 지정 된 횟수 내에 정상 성공 응답 및 데이터가 내려온 경우 for 반복문 break 탈출 수행

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------

1. 안드로이드 애플리케이션 실행 및 http 통신 api 폴링 호출 수행 액티비티 화면 진입


2. 안드로이드 api 폴링 동작 수행 실시 (☑️ 현재는 정상 인터넷 사용 가능한 와이파이 또는 셀룰러 데이터 사용 상태)


3. api 호출 진행 중 상태에서 휴대폰 상단 바를 내려 인터넷 사용 불가능한 와이파이에 연결 수행


4. 비정상 와이파이에 연결 되었지만, 폴링 동작이 지정 된 횟수만큼 계속 동작 되는 것 확인

------------------------------------------------------------------------------






------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------

1. 안드로이드 폴링 동작 수행 시 지정 된 횟수 카운트 마다 인터넷 연결 상태 확인 코드 추가

  >> ✅ 예시 코드 for 반복문 간략 코드 : 

    for (int i=0; i<30; i++){

        // HTTP 요청 수행 ....


        // ✅ 지정 된 횟수 체크 (5 배수 마다 인터넷 연결 상태 체크)
        if (i > 0 && i%5 == 0){

            if (인터넷 연결 상태 체크 시 false 인 경우){

                break; // 반복 문 탈출
            }

        }


        // 일정 시간 스레드 대기 후 재요청 ...

    }


2. 만약, 지정 된 횟수에 인터넷 사용이 불가능한 상태 인 경우 for 반복문 break 탈출 후 사용자에게 경고 팝업창 표시 수행


3. 안드로이드 현재 인터넷 사용 가능 상태 체크 소스 코드 첨부 : 

    // [ConnectivityManager 생성]
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);


    // [안드로이드 버전 분기 처리]
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {

        Network network = cm.getActiveNetwork();

        NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(network);

        // ✅ [인터넷 사용가능 하고 , 유효한 연결인지 확인 수행]
        boolean hasCapabilityInternet = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
        boolean hasCapabilityValidated = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);

        // ✅ [and 결과로 인터넷 사용 가능한 네트워크 환경 상태 체크]
        boolean result = (hasCapabilityInternet && hasCapabilityValidated);

        S_Log._W_("현재 연결된 네트워크 인터넷 사용 가능 상태 확인", new String[]{
                "result :: " + String.valueOf(result)
        });
    }

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------

▶️ [ConnectivityManager , NetworkCapabilities 사용해 현재 휴대폰 인터넷 사용 가능 상태 확인]

https://kkh0977.tistory.com/7349

https://blog.naver.com/kkh0977/223668787254?trackingCode=blog_bloghome_searchlist


▶️ [android] 안드로이드 http 통신 api 호출 폴링 수행 시 액티비티 종료 상태 체크 및 폴링 로직 종료 수행

https://kkh0977.tistory.com/7697

https://blog.naver.com/kkh0977/223759676308?trackingCode=blog_bloghome_searchlist


▶️ [업무 이슈] 안드로이드 android http 통신 api 호출 폴링 수행 시 액티비티가 종료 된 상태에서도 api 호출이 지속 되는 이슈

https://kkh0977.tistory.com/7696

https://blog.naver.com/kkh0977/223759660493?trackingCode=blog_bloghome_searchlist


▶️ [Rx] repeatWhen 사용해 http 폴링 방식 요청 수행 실시 - http polling request

https://kkh0977.tistory.com/4764

https://blog.naver.com/kkh0977/223238719346?trackingCode=blog_bloghome_searchlist

------------------------------------------------------------------------------
 
728x90
반응형
Comments