1 Soalan: Bagaimana untuk mendapatkan data dalam ini menggunakan retrofit

soalan dicipta di Wed, May 8, 2019 12:00 AM

Bagaimana hendak menggunakan data JSON jenis ini menggunakan Retrofit ? Bagaimana saya boleh menyelesaikan masalah ini?

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. Apa yang perlu dicuba setakat ini?
    2019-05-08 15: 56: 03Z
  2. tambahkan objek Movie pada soalan anda
    2019-05-08 15: 58: 51Z
1 Jawapan                              1                         

Jika anda melihat dokumentasi retrofit, anda memerlukan beberapa perkara untuk mendapatkannya berfungsi.

  1. Antara Muka Api
  2. Contoh Penyesuaian dan Pelanggan Http (Untuk tajuk dan sebagainya)
  3. Kelas perkhidmatan

Berikut adalah API kami

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

Kami perlu membuat objek data filem kami.

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

Sekarang bahawa kami mempunyai perkhidmatan, kami buat kilang Retrofit yang mudah yang akan membuat Retrofit untuk kami.

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();
    }
}

Kelas perkhidmatan Mudah kami akan.

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

Sekarang bahawa kami mempunyai semua komponen yang kami perlukan untuk sistem kami, di bawah adalah bagaimana kami melekatkannya bersama-sama.

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
sumber diletakkan di sini