2017-02-27 19 views
2

私はRetrofit 2とThe Movie Database API 3を使用しているところでアンドロイドAPPを開発しています。私はAPIキーを正しく渡す方法がわからないので、@Headerアノテーション新しいインターセプタをhttpClientに追加しようとしましたが、何も表示されませんでした。Retrofit 2でAPIキーを渡す - Androidスタジオ

私はできる限り多くのことを研究しましたが、何も助けてくれませんでした。ここ は、私はAPIインタフェースのための持っているものである:ここでは

public interface MoviesAPIService { 
@GET("discover/movie?api_key={api_key}") 
Call<List<MoviesResponse>> movieList(@Header("api_key") String api_key);} 

は、私は私の活動(ところでViewPagerでそのフラグメント)に持っているものです。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.movies_fragment, container, false); 

    movieListView = (ListView) rootView.findViewById(R.id.movieListView); 

    final OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 

    OkHttpClient client = httpClient.build(); 

    final Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(BASE_URL) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(client) 
      .build(); 


    MoviesAPIService moviesAPIService = retrofit.create(MoviesAPIService.class); 
    Call<List<MoviesResponse>> call = moviesAPIService.movieList(apiKey); 
    call.enqueue(new Callback<List<MoviesResponse>>() { 
     @Override 
     public void onResponse(Call<List<MoviesResponse>> call, retrofit2.Response<List<MoviesResponse>> response) { 
      Log.d(TAG, "onResponse: " + response.body()); 
     } 

     @Override 
     public void onFailure(Call<List<MoviesResponse>> call, Throwable t) { 

     } 
    }); 
    return rootView; 
} 

私が応じて、さまざまなエラーを得ました私がテストしていた内容に、このコードで、私は現在、これを取得しています:それはので、多分、私は何かが欠けていたAPIに来るとき

URL query string "api_key={api_key}" must not have replace block. For dynamic query parameters use @Query. 

私はかなりの初心者です。 ありがとうございました!

+1

削除 'あなたの注釈と@query( "API_KEY")' 'への変更@Header( "API_KEY")'からAPI_KEY = {API_KEY} ''、エラーが提案するように? (動的クエリパラメータは@Query_を使用しています) – maciekjanusz

+0

お手数をおかけしていただきありがとうございます。エラーはありませんが、ログにレスポンス本文が出力されません...続行する方法がわかりません... – user6828332

+0

私はAuthorizationでFirebaseメッセージング用にRetrofit2を使用しています。私の質問を見てみてくださいhttp://stackoverflow.com/questions/42454986/firebase-device-to-device-messaging-using-retrofit-how-do-i-get-message-id – eurosecom

答えて

1

遅くともお答えしますが、誰かがこの問題に遭遇した場合は助かります。

変数をapiパスに追加する場合は、@Pathという表記法を追加する必要があります。あなたのケースでは次のようになります。

@GET("discover/movie?api_key={api_key}") 
Call<List<MoviesResponse>> movieList(@Path("api_key") String api_key);} 
関連する問題