使用 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);
我在使用 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);