私はtmdb APIを使用してムービーアプリを構築しています。私はデータを取り込むために改造を使用しています。私は私のAPIキーが完全に正常に動作していることを確認しました。しかし、TMDbからのデータはフェッチされません。ここでAndroid:JsonデータがTMdb APIホストから取得しない
は私の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);
}
レトロフィットビルダー方法
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();
}
});
}
である私は、別のインターフェイスと改造ビルダークラスはOMdb APIを使用する必要があり完全に正常に動作します以下 はOMDb APIですインタフェース
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);
}
そして改造クラス
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();
}
});
}
この問題を解決するために私を助けてください!
は答えてくれてありがとう:。
@GET
方法は次のようになりますBASE_URL
除くこのすべてのように宣言する必要があります私はコードを修正しましたが、まだデータを取得できませんでした。応答は偽を示します。 – Suhas