使用 headers 和参数改造 URL

Retrofit URL with headers and params

我在使用 Retrofit 2 库时遇到了一些问题。我想用 https 请求发送 headers 和参数,我从日志中得到以下 url:

https://api.trakt.tv/movies/popular(page='1')?limit=10&extended=full,images

我得到了 404 状态码。上面的Url是正确的吗?

字符串端点 = "https://api.trakt.tv/";

@GET("movies/popular(page='{page}')?limit=10&extended=full,images")
public Observable<PopularMoviesResponse> getPopularMovies(@Header("trakt-api-version") String trakt_api_version,
                                                  @Header("trakt-api-key") String trakt_api_key,
                                                  @Path("page") String page);

/********
 * Helper class that sets up a new services
 *******/
class Creator {

    public static MovieService newSurveiesService() {
        Gson gson = new GsonBuilder()
                .setDateFormat("dd/MM/yyyy hh:mm:ss")
                .create();
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(MovieService.ENDPOINT)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();


        return retrofit.create(MovieService.class);
    }
}

看起来你在 @GET 中的 url 是错误的,因为你说 url @CaseyB 提供的有效。

@Get("movies/popular?page={page}&limit=10&extended=full,images")

或者,您可以使用 @Query 注释让 Retrofit 为您处理查询字符串:

@Get("movies/popular")
public Observable<PopularMoviesResponse> getPopularMovies(
                                              @Header("trakt-api-version") String trakt_api_version,
                                              @Header("trakt-api-key") String trakt_api_key,
                                              @Query("page") int page,
                                              @Query("limit") int limit,
                                              @Query("extended") String extended);