1 Вопрос: Как получить данные в этом с помощью модернизации

вопрос создан в Wed, May 8, 2019 12:00 AM

Как получить этот тип данных JSON с помощью Retrofit ? Как я могу решить эту проблему?

MainActivity.java

Api.getClient().getCategoryList(new Callback<List<Movie>>() {
    @Override
    public void success(List<Movie> movies, Response response) {
        if (movies.get(0).getError().equalsIgnoreCase("false")) {
           itemsList1=movies;
           setCategorydataRecycle();
        }
    }
}
{
    "error": false,
    "category": [
        {
            "category_id": "1",
            "category_name": "Adults",
            "categroy_image": "assets/category-image/cat1.jpg"
        },
        {
            "category_id": "2",
            "category_name": "Kids",
            "categroy_image": "assets/category-image/cat1.jpg"
        },
        {
            "category_id": "3",
            "category_name": "Gym",
            "categroy_image": "assets/category-image/cat1.jpg"
        }
    ]
}
    
0
  1. Что еще нужно попробовать?
    2019-05-08 15: 56: 03Z
  2. добавьте объект Movie к вашему вопросу
    2019-05-08 15: 58: 51Z
1 ответ                              1                         

Если вы посмотрите на документацию по модернизации, вам нужно несколько вещей, чтобы заставить ее работать.

  1. Интерфейс API
  2. Модифицированный экземпляр и Http-клиент (для заголовков и т. д.)
  3. Класс обслуживания

Вот наш API

 interface API {    
   @GET("/movies")
   Call<MovieResponse> retrieveMovies();
 }

Мы должны создать наш объект данных ответа на фильм.

class MovieResponse {
    List<Movie> movies;
    boolean error;
}

Теперь, когда у нас есть сервис, давайте создадим простую фабрику Retrofit, которая создаст для нас Retrofit.

public class RetrofitFactory {

    private static final String BASE_URL = "www.myurl.com";
    private Retrofit mRetrofit = null;

    public static Retrofit create(){
        if(mRetrofit == null){
            return createRetrofit();
        }
        return mRetrofit;
    }

    private static Retrofit createRetrofit(){
        return new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .client(createOkHttpClient())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();
    }

    private  static OkHttpClient createOkHttpClient(){
        return new OkHttpClient().newBuilder().addInterceptor(new Interceptor() {
            @Override
            public okhttp3.Response intercept(Chain chain) throws IOException {
                Request originalRequest = chain.request();

                Request.Builder builder = originalRequest.newBuilder().header("Authorization",
                    Credentials.basic("aUsername", "aPassword"));

                Request newRequest = builder.build();
                return chain.proceed(newRequest);
            }
        }).build();
    }
}

Наш простой класс обслуживания будет.

public class Services {
    public static  API getMoviesService(){
        return RetrofitFactory.create().create(API.class);
    }
}

Теперь, когда у нас есть все компоненты, которые нам нужны для нашей системы, ниже показано, как мы склеиваем ее.

public class MoviesRepository {

    public void retrieveMovies() {
        API api = Services.getMoviesService();
        Call <MovieResponse> call = api.retrieveMovies();
        call.enqueue(new Callback<MovieResponse>() {
            @Override
            public void success(MovieResponse mvRes, Response response) {
                // Get your error and movies list here
                // mvRes.error;
                //mvRes.movies
            }
        });
    }

}
    
0
2019-05-08 17: 36: 35Z
источник размещен Вот