[英]How to get data in this using retrofit
如何使用Retrofit獲取此類JSON數據? 我該如何解決這個問題?
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"
}
]
}
如果你看一下改裝文檔,你需要做一些事情來使它工作。
這是我們的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
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.