改造和reddit api问题

时间:2015-09-19 02:01:29

标签: android retrofit reddit

我无法使用改造访问reddit的json数据。我已将问题隔离到时间戳查询。如果我把这个问题拿出来,一切都运行得很好。奇怪的是,改造的链接在浏览器中可以正常工作,但在我的代码中却没有。

非常感谢帮助,谢谢。

服务类:

@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);

我的活动中的电话:

Call<ListingsModel> call =  service.test(service.TOP, service.RESTRICT_SR, service.LIMIT,
        timestamp, service.SYNTAX);

1 个答案:

答案 0 :(得分:3)

您的查询很多事情 -

首先不确定它是否剪切和粘贴,但你不应该包括&#34;&amp; q =&#34;在开头,因为那将为你生成。

其次,看起来您已经对搜索字符串进行了url编码。 retrofit / okhttp将再次尝试对其进行编码,这会弄乱查询。您有两种选择 - 不要传递预编码,因此查询字符串看起来像 -

timestamp:338166428..1348009628,请注意%3A与&#39;:&#39;

或者,您可以通过使用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);