在改造2中传递API密钥 - Android Studio
问题描述:
我正在开发一个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路径时,您需要添加@Path
表示法。你的情况应该是:
@GET("discover/movie?api_key={api_key}")
Call<List<MoviesResponse>> movieList(@Path("api_key") String api_key);}
删除'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