Android:dynamically pass model class to retrofit callback

后端 未结 10 1786
伪装坚强ぢ
伪装坚强ぢ 2020-12-05 04:34

In retrofit to map json response to pojo usually we do this

@POST
Call getDataFromServer(@Url String url, @Body HashMap ha         


        
10条回答
  •  星月不相逢
    2020-12-05 05:32

    First Create Interface:

    public interface
    ItemAPI {
    
        @GET("setup.php")
        Call getSetup(@Query("site_id") int id,@Query("ino") String ii);
    
        @GET("setup.php")
        void setMy(@Query("site_id") int id, Callback> sd);
        }
    

    Now create class:

    public class Apiclient {
    
        private static final String BASE_URL ="http://www.YOURURL.COM/";
        private static Retrofit retrofit = null;
    
        public static Retrofit getClient() {
    
            OkHttpClient.Builder httpClient2 = new OkHttpClient.Builder();
            httpClient2.addNetworkInterceptor(new Interceptor() {
    
                @Override
                public Response intercept(Chain chain) throws IOException {
                    Request.Builder builder = chain.request().newBuilder();
                    builder.addHeader("site_id","1");
                    return chain.proceed(builder.build());
                }
            });
            OkHttpClient client = httpClient2.build();
    
            if (retrofit == null) {
                retrofit = new Retrofit.Builder()
                        .baseUrl(BASE_URL)
                        .client(client)
                        .addConverterFactory(GsonConverterFactory.create())
                        .build();
            }
            return retrofit;
        }
    

    Now in any activity just use:

    ItemAPI itemAPI = Apiclient.getClient().create(ItemAPI.class);
         Call call=itemAPI.getSetup(1,count);
         call.enqueue(new Callback() {
                @Override
                public void onResponse(Call call, Response response) {
                    try {
                        if (response.body().getItem().size()>0){
    
                        }
    
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
    
                @Override
                public void onFailedAfterRetry(Throwable t) {
    
                }
            });
    

提交回复
热议问题