Je crée une application de film à l'aide de l'API tmdb. J'utilise retrofit pour aller chercher les données. J'ai vérifié que mon api-key fonctionne parfaitement bien. Mais les données de TMDb ne sont pas récupérées.Android: les données JSON ne sont pas extraites de l'hôte de l'API TMdb
Voici mon interface API
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface MoviesAPI {
@GET("/movie/popular")
Call<MovieBean> getPopular(@Query("apikey")String key);
}
méthode constructeur Rénovation
public void getPopularMovies() {
OkHttpClient client = new OkHttpClient.Builder().build();
final String api_key = getString(R.string.tmdb_api_key);
final String BASE_URL = "http://api.themoviedb.org/3/";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create()).build();
MoviesAPI service = retrofit.create(MoviesAPI.class);
Call<MovieBean> call = service.getPopular(api_key);
call.enqueue(new Callback<MovieBean>() {
@Override
public void onResponse(Call<MovieBean> call, Response<MovieBean> response) {
Log.d("movietest", "onResponse() tmdb, response_success? -" + response.isSuccessful());
}
@Override
public void onFailure(Call<MovieBean> call, Throwable t) {
Toast.makeText(getApplicationContext(), "Couldn't fetch data!", Toast.LENGTH_LONG).show();
}
});
}
J'ai une autre classe Interface Builder et la modernisation utilise l'API OMDB fonctionne parfaitement bien est Ci-dessous API OMDB Interface
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface MoviesAPI2 {
@GET("/")
public Call<MovieBean2> getInfo(@Query("apikey")String omdbkey,
@Query("t")String movName,@Query("plot") String plot);
}
et la classe de mise à niveau
private static Retrofit obj = null;
public static final String BASE_URL = "http://www.omdbapi.com/?";
public static Retrofit getInstance(){
//Interceptor httpLogging = new
OkHttpClient client = new OkHttpClient.Builder().build();
if(obj==null){
obj = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return obj;
}
public void search_movie() {
final String PLOT = "full";
Log.d("movietest", "entered input " + title);
// I get title from searchView
Retrofit retrofit = RetrofitBuilder.getInstance();
MoviesAPI2 service = retrofit.create(MoviesAPI2.class);
Call<MovieBean2> call = service.getInfo(getString(R.string.omdb_api_key), title,PLOT);
call.enqueue(new Callback<MovieBean2>() {
@Override
public void onResponse(Call<MovieBean2> call, Response<MovieBean2> response) {
Log.d("movietest", "onResponse(),success" + response.isSuccessful());
mBean = response.body();
tvTit.setText(mBean.getTitle());
tvDesc.setText(mBean.getPlot());
tvactors.setText(mBean.getActors());
Picasso.with(getApplicationContext()).load(mBean.getPoster()).into(imagView);
Picasso.with(getApplicationContext()).load(mBean.getPoster()).into(imgView);
Log.d("movietest", "onResponse(), bean 2=" + mBean);
}
@Override
public void onFailure(Call<MovieBean2> call, Throwable t) {
Toast.makeText(getApplicationContext(),"Could not fetch.Please try again later!",Toast.LENGTH_LONG).show();
//t.printStackTrace();
}
});
}
S'il vous plaît aidez-moi à résoudre ce problème!
Merci pour la réponse. J'ai corrigé le code comme suggéré, mais je n'ai toujours pas pu récupérer les données. La réponse montre faux. – Suhas