0

This is my current code for API CALL using Retrofit 2.0 and working fine

private void getWallet(String api_key) {
    final ProgressDialog loading = new ProgressDialog(ActivityWallet.this, R.style.MyTheme);
    loading.setCancelable(true);
    loading.show();


    Retrofit retrofit = new Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())
            .baseUrl(Constants.BASERESTURL)
            .client(httpClient)
            .build();

    EndPoints apiOrders = retrofit.create(EndPoints.class);
    Call<ArrayList<Order>> call = apiOrders.getWallet(api_key);
    call.enqueue(new Callback<ArrayList<Order>>() {
        @Override
        public void onResponse(Response<ArrayList<Order>> response, Retrofit retrofit) {
            loading.dismiss();
            ArrayList<Order> orders = response.body();
            Utility.setOrders(orders);
            AdapterOrder adapter = new AdapterOrder(getApplicationContext(), Utility.getOrders());
            orderListView.setAdapter(adapter);
        }

        @Override
        public void onFailure(Throwable t) {
            Utility.displaySnackBar(coordinatorLayout, "INTERNET CONNECTION LOST");
            loading.dismiss();
        }
    });
}

Now i need to add header in request. After googling i came to know that i can use okhttp. I made new code as below to add header in request:

private void getWallet(String api_key) {
    final ProgressDialog loading = new ProgressDialog(ActivityWallet.this, R.style.MyTheme);
    loading.setCancelable(true);
    loading.show();




    OkHttpClient httpClient = new OkHttpClient();
    httpClient.networkInterceptors().add(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request().newBuilder().addHeader("test", "test").build();
            return chain.proceed(request);
        }
    });

    Retrofit retrofit = new Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())
            .baseUrl(Constants.BASERESTURL)
            .client(httpClient)
            .build();

    EndPoints apiOrders = retrofit.create(EndPoints.class);
    Call<ArrayList<Order>> call = apiOrders.getWallet(api_key);
    call.enqueue(new Callback<ArrayList<Order>>() {
        @Override
        public void onResponse(Response<ArrayList<Order>> response, Retrofit retrofit) {
            loading.dismiss();
            ArrayList<Order> orders = response.body();
            Utility.setOrders(orders);
            AdapterOrder adapter = new AdapterOrder(getApplicationContext(), Utility.getOrders());
            orderListView.setAdapter(adapter);
        }

        @Override
        public void onFailure(Throwable t) {
            Utility.displaySnackBar(coordinatorLayout, "INTERNET CONNECTION LOST");
            loading.dismiss();
        }
    });
}

But it is giving compilation error in this line return chain.proceed(request);

required: retrofit.Response
found: com.squareup.okhhtp.Response

After changing import to com.squareup.okhhtp.Response i m seeing lot of errors in retrofit response.

Can anyone help me what i am doing wrong? How to fix it?

Devesh Agrawal
  • 8,982
  • 16
  • 82
  • 131
  • [Check this](http://stackoverflow.com/questions/32963394/how-to-use-interceptor-to-add-headers-in-retrofit-2-0) – M D Mar 12 '16 at 06:36
  • where we will get the response? How to handle it? – Devesh Agrawal Mar 12 '16 at 06:40
  • Your problem is that you mixed up all the code in one that's why `Response class` is conflict. better to make separate classes for all and manage your code properly. You can refer my [Demo](https://github.com/manishpatelgt/MyStackOverflowRepo) for that – M D Mar 12 '16 at 06:43

0 Answers0