我正在尝试使用Retrofit实现TheMovieDB API,但我无法将api密钥附加到查询的开头。感觉就像TheMovieDB在查询开始时有一种非传统的方式要求api密钥一样。
当试图拦截请求并添加查询参数时,它会被附加到请求的末尾,这不是我想要的。
private class WebApiAuthenticator implements RequestInterceptor {
@Override
public void intercept(RequestFacade request) {
if (apiKey != null) {
request.addEncodedQueryParam(PARAM_API_KEY, apiKey);
}
}
}
服务实施:
@GET("/search/multi&query={query}")
void getSearchResults(@Path("query") String query, Callback<String> callback);
这会产生这样的结果:
---> HTTP GET https://api.themoviedb.org/3/search/multi&query=mysearchquery?api_key=thisismyapikey
我想要这个结果:
---> HTTP GET https://api.themoviedb.org/3/search/multi?api_key=thisismyapikey&query=mysearchquery
如何将查询参数添加到请求的开头呢?
答案 0 :(得分:1)
我找到了解决方案。 我没有从那里拦截和添加查询参数,而是创建了一个查询地图,并始终将我的api密钥与查询地图一起传递给服务,如下所示:
@GET("/search/multi")
void getSearchResults(@QueryMap Map<String, String> queries, Callback<String> callback);
这是服务实现:
---> HTTP GET https://api.themoviedb.org/3/search/multi?api_key=myapikey&query=avengers
这会产生结果:
public class Questions {
ArrayList<String> questionsList = new ArrayList<>();
public Questions(String question,String answer) {
questionsList.add(question);
questionsList.add(answer);
}
public ArrayList<String> getQuestionsList() {
return questionsList;
}
}