我无法使用改造访问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);
答案 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);