改造和 reddit api 问题
Retrofit and reddit api issues
我在使用改造访问 reddit 的 json 数据时遇到问题。我已将问题隔离到时间戳查询。如果我取消该查询,一切都会正常进行。奇怪的是,改造正在构建的 link 在浏览器中运行良好,但在我的代码中却不行。
非常感谢帮助,谢谢。
服务class:
@GET("search.json")
Call<ListingsModel> test(@Query("sort") String TOP, @Query("restrict_sr") String RESTRICT_SR,
@Query("limit") int LIMIT,
@Query("q") String q, @Query("syntax") String SYNTAX);
建造者代码:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
service = retrofit.create(ApiService.class);
我activity中的调用:
Call<ListingsModel> call = service.test(service.TOP, service.RESTRICT_SR, service.LIMIT,
timestamp, service.SYNTAX);
关于您的查询的一些事情 --
首先不确定它是否被剪切和粘贴,但你不应该在开头包含“&q=”,因为它会为你生成。
其次,您似乎已经 url 对查询字符串进行了编码。 retrofit/okhttp 将尝试再次对其进行编码,这会弄乱查询。您有两个选择——不通过预编码,因此查询字符串将类似于 --
timestamp:338166428..1348009628
,注意 %3A 与“:”
或者,您可以通过将 encoded
参数用于 @Query
来告诉改造查询已经编码并且不再编码
@GET("search.json")
Call<ResponseBody> test(@Query("sort") String TOP, @Query("restrict_sr") String RESTRICT_SR,
@Query("limit") int LIMIT,
@Query(value = "q", encoded = true) String q, @Query("syntax") String SYNTAX);
我在使用改造访问 reddit 的 json 数据时遇到问题。我已将问题隔离到时间戳查询。如果我取消该查询,一切都会正常进行。奇怪的是,改造正在构建的 link 在浏览器中运行良好,但在我的代码中却不行。
非常感谢帮助,谢谢。
服务class:
@GET("search.json")
Call<ListingsModel> test(@Query("sort") String TOP, @Query("restrict_sr") String RESTRICT_SR,
@Query("limit") int LIMIT,
@Query("q") String q, @Query("syntax") String SYNTAX);
建造者代码:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
service = retrofit.create(ApiService.class);
我activity中的调用:
Call<ListingsModel> call = service.test(service.TOP, service.RESTRICT_SR, service.LIMIT,
timestamp, service.SYNTAX);
关于您的查询的一些事情 --
首先不确定它是否被剪切和粘贴,但你不应该在开头包含“&q=”,因为它会为你生成。
其次,您似乎已经 url 对查询字符串进行了编码。 retrofit/okhttp 将尝试再次对其进行编码,这会弄乱查询。您有两个选择——不通过预编码,因此查询字符串将类似于 --
timestamp:338166428..1348009628
,注意 %3A 与“:”
或者,您可以通过将 encoded
参数用于 @Query
@GET("search.json")
Call<ResponseBody> test(@Query("sort") String TOP, @Query("restrict_sr") String RESTRICT_SR,
@Query("limit") int LIMIT,
@Query(value = "q", encoded = true) String q, @Query("syntax") String SYNTAX);