상세 컨텐츠

본문 제목

코틀린 프로젝트04

JSP·자바·코틀린

by 김일국 2022. 3. 16. 18:00

본문

이번 포스트는 스프링부트API 실행상태로 안드로이드 앱에서 Retrofit모듈(okhttpt사용)으로 /api/hello 접속시 json 데이터를 안드로이드 콘솔에 출력하는 스프링부트API서비스(서버) - 안드로이드 앱(클라이언트) 통신을 사용해 보았습니다.

신규작업소스(스프링부트API): https://github.com/kimilguk/shop-api

신규작업소스(안드로이드앱): https://github.com/kimilguk/shop-app

결과(아래)

스프링부트 API 확인(위)
하단 콘솔에 Hello 코틀린 이 나오면 정상이다.(위)

- 핵심 코드는 아래와 같다

/**
 * 외부 스프링부트API 서비스와 연결시키는 기능
 */
class ApiGenerator {
    //Retrofit 모듈을 사용하여 HTTP 통신 객체를 생성(아래)
    //빌더 형식으 함수는 값을 Set 할 때 개발자 명시적으로 사용이 가능하다
    //그래서, 파라미터 매개변수 방식으로 입력하는 것보다 편리하게 사용가능하다.
    fun <T> generate(api: Class<T>): T = Retrofit.Builder()
        .baseUrl(HOST)
        .addConverterFactory(GsonConverterFactory.create())
        .client(httpClient())//기본적으로 OkHttp클라이언트를 사용한다.
        .build()
        .create(api)
    //디버깅 로그를 확인 할 수 있도록 설정함수 추가(아래)
    private fun httpClient(): OkHttpClient = //Convert to expression body 로 변경
        OkHttpClient.Builder().apply {
            addInterceptor(httpLoggingIntercepter())
        }.build()
    private fun httpLoggingIntercepter(): Interceptor = //반환값인 body 를 생성
        HttpLoggingInterceptor().apply {
            level = HttpLoggingInterceptor.Level.BODY
        }
    companion object {//static 대신 companion 을 사용, object는 싱글톤 클래스로 실행과 동시에 1개의 객체가 생성된다.
        const val HOST = "http://192.168.1.2:8080"//스프링부트API 서비스 주소
    }
}

- 주의: 위 HOST 상수 값에서 주소는 개발시 본인 PC의 ipconfig/all 로 알아낸 주소 이다.(작업자 마다 모두 틀리다)

- 그리고, 주의 할 점은 크롬에서는 localhost:8080 라든지 127.0.0.1:8080 은 스프링부트API서비스로 접속되지만,

단, 안드로이드 앱에서는 개발시 본인 PC의 ipconfig/all 로 알아낸 주소를 사용해야 한다.(실제 서비스에서는 운영중인 도메인명을 입력하면 된다.^^)

'JSP·자바·코틀린' 카테고리의 다른 글

코틀린 프로젝트06  (0) 2022.03.18
코틀린 프로젝트05  (0) 2022.03.17
코틀린 프로젝트03  (0) 2022.03.14
코틀린 프로젝트02  (0) 2022.03.13
코틀린 프로젝트01  (0) 2022.03.11

관련글 더보기

댓글 영역