2016-06-29 36 views
0

我正在尝试使用Retrofit 2.0对移动后端进行API调用。在我的API调用,我必须做出必要调用这个URL使用&符号翻新查询注释

https://api.backendless.com/v1/data/Users?where=followings.objectId=%270B3BA7F9-260F-B378-FF9A-3C2448B8A700%27

为了形成改造这个网址我一直在使用界面下方

@GET("Users?where=") 
Call<List<User>> getFollowers(@Query("followings.objectId") String objectId); 

此接口调用放查询参数前的&符号,并生成如下的URL:

https://api.backendless.com/v1/data/Users?where=&followings.objectId=%270B3BA7F9-260F-B378-FF9A-3C2448B8A700%27

我试图用Path注解来解决这个问题,但我总是收到“URL查询字符串不能有替换块”。对于使用@Query的动态查询参数“错误

我尝试连接的API需要使用”where =“子句进行过滤设计,我没有权限更改该设置,我想要以某种方式告诉Retrofit不要查询参数或任何变通办法针对此问题前加上一个&符号。

任何帮助表示赞赏。

回答

0

@GET(“{}路径”) 呼叫> getFollowers(@路径(“路径”)路径,@Query(“followings.objectId”)String objectId);

getFollowers(“Users?where =”,...)

+0

您提出的解决方案不幸给了我一个不同的URL https://api.backendless.com/v1/data/Users%3Fwhere=?followings.objectId=%270B3BA7F9-260F-B378-FF9A-3C2448B8A700%27这是因为问号正确的后面r“用户”变为网址编码。我在路径注释中尝试了encoded = true,但它仍将其转换为URL编码 – Kemal

0

对于那些谁寻求类似的答案,我想出了以下解决方案

我宣布我的接口@url

@GET 
Call<List<User>> getFollowers(@Url String objectId); 

,并产生相关的URL部分作为一个扩展方法

public String toFollowerRequest(){ 
    return RestGlobals.BASE_URL + "Users?where=followings.objectId=%27" + objectId + "%27"; 
}