Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use enque method in retrofit in Kotlin android

I am trying to get a response from web service using retrofit and kotlin language. but i am unable to call enque method .

This is retrofit client

    class WebService() {

    companion object {
        fun createService(isAddToken: Boolean): WebServiceApi {
            val logging = HttpLoggingInterceptor()
            val httpClient = OkHttpClient.Builder()
            var retrofit: Retrofit

            httpClient.addInterceptor { chain ->
                val original = chain.request()
                val requestBuilder = original.newBuilder()
                        .header(CONTENT_TYPE, "application/json")
                        .header(API_USER_NAME, AUTH_USERNAME)
                        .header(API_PASSWORD, AUTH_PASSWORD)
                        .header(LANGUAGE_CODE, "en")
                if (isAddToken) {
                    requestBuilder.header(TOKEN,
                            "" /*DataGenerator.getAuthToken(context)*/)
                }

                requestBuilder.method(original.method(), original.body())
                val request = requestBuilder.build()
                chain.proceed(request)
            }

            // set your desired log level
            if (BuildConfig.DEBUG) {
                logging.level = HttpLoggingInterceptor.Level.BODY
                // add logging as last interceptor
                httpClient.addInterceptor(logging)
            }

            // Timeout handling
            val client = httpClient.readTimeout(20,
                    TimeUnit.SECONDS)
                    .connectTimeout(20, TimeUnit.SECONDS)
                    .writeTimeout(20, TimeUnit.SECONDS)
                    .build()

            if (BuildConfig.DEBUG) {
                retrofit = Retrofit.Builder()
                        .baseUrl(WebServiceConstants.LIVE_BASE_URL)
                        .addConverterFactory(GsonConverterFactory.create())
                        .client(client)
                        .build()
            } else {
                retrofit = Retrofit.Builder()
                        .baseUrl(WebServiceConstants.LIVE_BASE_URL)
                        .addConverterFactory(GsonConverterFactory.create())
                        .client(client)
                        .build()

            }

            return retrofit.create(WebServiceApi::class.java);
        }
    }
}

This is code of MainActivity where i am calling api on button

 val parameterOTP = SendParameterOTP()
 parameterOTP.phoneNumber = phoneNumber

 var serviceAPI = WebService.createService(false)
 serviceAPI.enque() \\Unable to understand how i call enques**

I tried example using rxjava ,it works fine .But i want to use enque method as i want to implement custom callback for retrying . Please help

like image 819
Usman Saeed Avatar asked Sep 06 '25 03:09

Usman Saeed


1 Answers

try to use this:

val call = createService(isAddToken).methodNameInWebServiceApi(params)
            call.enqueue(object : Callback<ResponseObject> {
                override fun onFailure(call: Call<ResponseObject>?, t: Throwable?) {
                    Log.e("erroe", "")
                }

                override fun onResponse(call: Call<ResponseObject>?, response: Response<ResponseObject>?) {

                }
            })
like image 114
Lalit Jadav Avatar answered Sep 07 '25 22:09

Lalit Jadav