관리 메뉴

나만을 위한 블로그

[Android] 레트로핏2.x에서 response를 String으로 받아오는 법 본문

Android

[Android] 레트로핏2.x에서 response를 String으로 받아오는 법

참깨빵위에참깨빵_ 2020. 5. 21. 18:20
728x90
반응형

먼저 앱 수준 gradle에 레트로핏 의존성이 있어야 한다. 그 중 이 의존성이 필요하다.

 

implementation 'com.squareup.retrofit2:converter-scalars:2.5.0'

 

그 다음 new Retrofit.Builder() 뒤에 이 컨버터 팩토리를 붙여야 한다

 

.addConverterFactory(ScalarsConverterFactory.create())

 

난 레트로핏 객체를 리턴하는 함수를 이렇게 설정했다.

 

public static Retrofit getStringApiClient()
    {
        Gson gson = new GsonBuilder()
                .setLenient()
                .create();

        if (retrofit == null)
        {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(new NullOnEmptyConverterFactory())
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
        return retrofit;
    }

 

그리고 사용은 이렇게 했다.

 

public void getMsg(String msg)
    {
        ApiInterface apiInterface = ApiClient.getStringApiClient().create(ApiInterface.class);
        Call<String> call = apiInterface.getMsg(msg);
        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response)
            {
                if (response.isSuccessful() && response.body() != null)
                {
                    Log.e("String 결과값", "response.body().toString() : " + response.body().toString());
                }
            }

            @Override
            public void onFailure(@NonNull Call<String> call, @NonNull Throwable t)
            {
                Log.e(TAG, t.getLocalizedMessage());
            }
        });
    }

 

인터페이스에서 정의한 함수와 액티비티에서 사용하는 함수간에 아다리가 맞아야 하는 것에 주의하자.

Call<String>이 아니라 Call<List<XXX>>형태로 Call 객체를 호출한다거나, Call<클래스명>의 형태로 Call 객체를 호출하지 말아야 한다. 이렇게 했다간 바로 빨간맛이 나온다. 빠빠빨간맛

 

다 설정해줬으면 로그를 통해서 결과값을 원하는 대로 받아왔는지 확인한다.

반응형
Comments