retrofit 动态URL中含有反斜杠'/'的处理方法

  • 最近在使用rxjava + retrofit + okhttp重构公司安卓项目代码,然后发现这么一个接口
image.png
  • 使用Retrofit来表示的话,开始抱着试一试的态度,使用了下面的方式
@GET("/xxxx/transfers{path}")
Observable capitalList(@Path("path") String path, @Query("page") int page);
  • 其中path可能的值如下。问题就在于“”和“/xxxx”同时存在
private String[] path = {"", "/recharge", "/withdraw"};
  • 然后就报错了
 <-- 404 https://server_api/xxxx/transfers%2Frecharge?page=1 (89ms)
  • 从日志可以看出来,Retrofit内部将"/"进行encode而不是整个path参数,所以发生了404
  • 解决办法是对path参数整体进行encode
@GET("/xxxx/transfers{path}")
Observable capitalList(@Path(value = "path", encoded = true) String path, @Query("page") int page);

你可能感兴趣的:(retrofit 动态URL中含有反斜杠'/'的处理方法)