2
我正在開發一個android應用程序,我使用的是Retrofit 2和Movie Database API 3.我不確定如何正確傳遞API密鑰,我嘗試使用@Header註釋並嘗試向httpClient添加新的攔截器,但仍然沒有。在改造2中傳遞API密鑰 - Android Studio
我儘可能多的研究,但沒有任何幫助。 以下是我對API接口:
public interface MoviesAPIService {
@GET("discover/movie?api_key={api_key}")
Call<List<MoviesResponse>> movieList(@Header("api_key") String api_key);}
以下是我在我的活動(其在ViewPager片段BTW):
@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;
}
我有許多不同的錯誤,這取決於什麼我測試,以及與此代碼,我目前得到這個:
URL query string "api_key={api_key}" must not have replace block. For dynamic query parameters use @Query.
我很初學者當涉及到的API,所以也許我失去了一些東西。 謝謝你的幫助!
刪除'API_KEY =從您的註釋和變化'@Header( 「API_KEY」)''來@Query( 「API_KEY」){} API_KEY''一樣的錯誤提示? (_For動態查詢參數使用@Query_) – maciekjanusz
非常感謝您的幫助,當我這樣做時不會輸出任何內容。沒有錯誤,但日誌不會輸出任何響應主體...不知道如何繼續... – user6828332
我使用Retrofit2進行Firebase消息授權。嘗試看我的問題http://stackoverflow.com/questions/42454986/firebase-device-to-device-messaging-using-retrofit-how-do-i-get-message-id – eurosecom