改造和 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);