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
并且已经有一些查询参数...所以添加新的结尾,在末尾添加 ¶m=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"
大家好我在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
并且已经有一些查询参数...所以添加新的结尾,在末尾添加 ¶m=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"