이번 포스트는 스프링부트API 실행상태로 안드로이드 앱에서 Retrofit모듈(okhttpt사용)으로 /api/hello 접속시 json 데이터를 안드로이드 콘솔에 출력하는 스프링부트API서비스(서버) - 안드로이드 앱(클라이언트) 통신을 사용해 보았습니다.
신규작업소스(스프링부트API): https://github.com/kimilguk/shop-api
신규작업소스(안드로이드앱): https://github.com/kimilguk/shop-app
결과(아래)
- 핵심 코드는 아래와 같다
/**
* 외부 스프링부트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 로 알아낸 주소를 사용해야 한다.(실제 서비스에서는 운영중인 도메인명을 입력하면 된다.^^)
코틀린 프로젝트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 |
댓글 영역