2017-07-21 18 views
0

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

この問題を解決するために私を助けてください!

答えて

0

あなたは「/」ではなく

import retrofit2.Call; 
import retrofit2.http.GET; 
import retrofit2.http.Query; 

public interface MoviesAPI { 

@GET("movie/popular") 
Call<MovieBean> getPopular(@Query("apikey")String key); 
} 

変更の上、あなたのベースURLに入れて、あなたにぴったりのURLを行い、それを試して、あなたのURLを起動してはいけません。クエリパラメータがapi_key &ないapikeyであることを

import retrofit2.Call; 
import retrofit2.http.GET; 
import retrofit2.http.Query; 

public interface MoviesAPI { 

@GET("3/movie/popular") 
    Call<MovieBean> getPopular(@Query("api_key") String key); 
} 

注:

+0

は答えてくれてありがとう:。

@GET方法は次のようになりますBASE_URL除くこのすべてのように宣言する必要があります私はコードを修正しましたが、まだデータを取得できませんでした。応答は偽を示します。 – Suhas

1

あなたのAPIインタフェースは、次のようになります。

final String BASE_URL = "http://api.themoviedb.org"; 
関連する問題