투케이2K

823. (Android/Java) [간단 소스] AsyncHttpClient (loopj) 라이브러리 http 요청 onRetry 재요청 시도 카운트 확인 본문

Android

823. (Android/Java) [간단 소스] AsyncHttpClient (loopj) 라이브러리 http 요청 onRetry 재요청 시도 카운트 확인

투케이2K 2024. 8. 1. 20:53
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

                try {

                    // --------------------------------------------------------
                    // TODO [AsyncHttpClient 라이브러리 버전] : implementation 'com.loopj.android:android-async-http:1.4.9'
                    // --------------------------------------------------------


                    // --------------------------------------------------------
                    // TODO [URL 정의]
                    // --------------------------------------------------------
                    String url = "https://jsonplaceholder.typicode.com/posts";


                    // --------------------------------------------------------
                    // TODO [AsyncHttpClient 객체 정의 및 타임 아웃 시간 설정]
                    // --------------------------------------------------------
                    AsyncHttpClient client = new AsyncHttpClient();
                    client.setTimeout(5000);
                    client.setMaxRetriesAndTimeout(2, 1000); // TODO [재요청 시도 횟수 지정 및 딜레이 시간]


                    // --------------------------------------------------------
                    // TODO [request 요청 헤더 요청 값 정의]
                    // --------------------------------------------------------
                    String contentType = "application/json";
                    client.addHeader("Content-type", contentType); // TODO [헤더 값 추가]
                    client.addHeader("Authorization", "Bearer"); // TODO [헤더 값 추가]


                    // --------------------------------------------------------
                    // TODO [Body Json 전송값 정의]
                    // --------------------------------------------------------
                    String jsonString = "{\"userId\":1, \"id\":1}";


                    // --------------------------------------------------------
                    // TODO [StringEntity 객체 정의]
                    // --------------------------------------------------------
                    StringEntity entity = new StringEntity(String.valueOf(jsonString));


                    // --------------------------------------------------------
                    // TODO [Request 요청 수행]
                    // --------------------------------------------------------
                    client.post(A_Intro.this, url, entity, contentType, new AsyncHttpResponseHandler() {

                        //TODO [웹요청 시작]
                        @Override
                        public void onStart() {
                            S_Log._F_(A_Intro.this, "AsyncHttpClient :: HTTP 통신 POST [요청] 수행", new String[]{
                                    "URL : " + String.valueOf(url),
                                    "DATA : " + String.valueOf(jsonString)
                            });
                        }

                        //TODO [재시도 확인]
                        @Override
                        public void onRetry(int retryNo) {
                            super.onRetry(retryNo);

                            C_Ui_View.toastLongNormal(A_Intro.this, "RETRY : " + String.valueOf(retryNo));
                        }

                        //TODO [웹요청 성공]
                        @Override
                        public void onSuccess(int statusCode, Header[] headers, byte[] response) {
                            String responseData = String.valueOf(new String(response));
                            S_Log._F_(A_Intro.this, "AsyncHttpClient :: HTTP 통신 POST [응답] 확인", new String[]{
                                    "URL : " + String.valueOf(url),
                                    "STATUS_CODE : " + String.valueOf(statusCode),
                                    "DATA : " + String.valueOf(responseData)
                            });
                        }

                        //TODO [웹요청 실패]
                        @Override
                        public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable throwable) {
                            S_Log._F_(A_Intro.this, "AsyncHttpClient :: HTTP 통신 POST [에러] 발생", new String[]{
                                    "URL : " + String.valueOf(url),
                                    "STATUS_CODE : " + String.valueOf(statusCode),
                                    "ERROR : " + String.valueOf(throwable.getMessage())
                            });
                        }
                    });
                }
                catch (Exception e){
                    e.printStackTrace();
                }

 

반응형
Comments