Retrofit中如何在URL中使用@Query?

How to use @Query in URL in Retrofit?

大家好我在URL下方使用Retrofit

https://api.stackexchange.com/2.2/me?key=gQJsL7krOvbXkJ0NEI((&site=Whosebug&order=desc&sort=reputation&access_token=HM*22z8nkaaoyjA8))&filter=default

为此我创建了 Interface RestInterface

 //get UserId
 @GET("/me&site=Whosebug&order=desc&sort=reputation&access_token={access_token}&filter=default")
 void getUserId(@Query("key") String apikey,@Path("access_token") String access_token,Callback<UserShortInfo> cb);

当我这样做时,它总是在 URL(Output below) 的末尾添加密钥。

我将 @Query("key") 添加为 Query Parameter 因为它是动态的。

 http://api.stackexchange.com/2.2/me&site=Whosebug&order=desc&sort=reputation&access_token=p0j3dWLIcYQCycUHPdrA%29%29&filter=default?key=gQJsL7krOvbXkJ0NEI%28%28 

这是错误的。我得到了HTTP 400。还有这里(())转换成%28%28%29%29

请帮我制作

 https://api.stackexchange.com/2.2/me?key=gQJsL7krOvbXkJ0NEI((&site=Whosebug&order=desc&sort=reputation&access_token=HM*22z8nkaaoyjA8))&filter=default

Retrofit 中。我希望它在 URL 之间添加 @Query 参数。不在 URL

的末尾

显然相反

@GET("/me&site=Whosebug&order=desc&sort=reputation&access_token={access_token}&filter=default")
void getUserId(@Query("key") String apikey,@Path("access_token") String access_token,Callback<UserShortInfo> cb);

你应该使用

@GET("/me?site=Whosebug&order=desc&sort=reputation&filter=default")
void getUserId(@Query("key") String apikey,@Query("access_token") String access_token,Callback<UserShortInfo> cb);

变化是 /me&/me? ...(第二个是使用 access_token 作为 Query 参数,而不是 Path )

编辑 更多解释:

解析后 url 看起来像 (me&)

scheme:host/me&blablalbal=blalbla&blabla=blabla

路径是

me&blablalbal=blalbla&blabla=blabla

并且根本没有查询参数...所以添加参数以在末尾添加 ?param=value 结束

但与 (me?)

scheme:host/me?blablalbal=blalbla&blabla=blabla

路径是

me

并且已经有一些查询参数...所以添加新的结尾,在末尾添加 &param=value :)

不要将查询参数放在 URL 中,只能添加您可以添加的路径参数

@GET("/me?site=Whosebug&order=desc&sort=reputation&filter=default)
void getUserId(@Query("key") String apikey,@Query("access_token") String access_token,Callback<UserShortInfo> cb);

@Query("access_token") --> given key and value will come query URL

发送请求时,您的 URL 表单将如下所示

/me?key=?site=Whosebug&order=desc&sort=reputation&filter=default&"your_value"&access_token="your_value"