Java 改型错误URL查询字符串不能有替换块
我有这个功能Java 改型错误URL查询字符串不能有替换块,java,android,get,retrofit,Java,Android,Get,Retrofit,我有这个功能 @GET("/users?filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}") UserDto retrieveUsersByFilters(@Path("param") String nameFilter, @Path("value") String value); 我试着这样称呼它: UserDto currentUser = int
@GET("/users?filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}")
UserDto retrieveUsersByFilters(@Path("param") String nameFilter, @Path("value") String value);
我试着这样称呼它:
UserDto currentUser = interfaceUser.retrieveUsersByFilters(User.LOGIN, login);
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(@Path("filters[0][field]") String nameFilter, @Path("filters[0][value]") String value);
但我有一个错误:
Reformation.ReformationError:InterfaceUser.retrieveUsersByFilters:URL查询字符串“filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}”不能有替换块
我已经在firefox上测试了url,它运行良好
谢谢你的回复
编辑
解决方案:
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
@Query("filters[0][field]") String nameFilter,
@Query("filters[0][value]") String value);
不要将值直接放在路径中,而应该放在方法签名中。 不完全确定,但请尝试以下方法:
UserDto currentUser = interfaceUser.retrieveUsersByFilters(User.LOGIN, login);
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(@Path("filters[0][field]") String nameFilter, @Path("filters[0][value]") String value);
查询参数有自己的注释,自动附加到URL
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
@Query("filters[0][field]") String nameFilter,
@Query("filters[0][value]") String value);
您可以在URL=“/api-mobile\u prateek2.php?method=getProductById&pid=”上阅读有关@Query
的更多信息
@GET(“/api-mobile\u prateek2.php?method=getProductById”)
调用响应产品(@Query(“pid”)字符串pid);
不要将pid放在@GET中,改型会使用@Query自动修复url
从:
示例1:
@GET("/friends")
Call<ResponseBody> friends(@Query("page") int page);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String group);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String... groups);
@GET("/friends")
Call<ResponseBody> friends(@Query(value="group", encoded=true) String group);
@GET(“/friends”)
呼叫好友(@Query(“page”)int page);
与foo.friends(1)通话会产生/friends?page=1。
带有null的示例:
示例2:
@GET("/friends")
Call<ResponseBody> friends(@Query("page") int page);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String group);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String... groups);
@GET("/friends")
Call<ResponseBody> friends(@Query(value="group", encoded=true) String group);
@GET(“/friends”)
呼叫好友(@Query(“group”)字符串组);
使用foo.friends(null)调用会产生/friends。
数组/Varargs示例:
示例3:
@GET("/friends")
Call<ResponseBody> friends(@Query("page") int page);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String group);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String... groups);
@GET("/friends")
Call<ResponseBody> friends(@Query(value="group", encoded=true) String group);
@GET(“/friends”)
呼叫好友(@Query(“group”)字符串…groups);
与foo.friends(“同事”、“保龄球”)通话会产生/friends?group=同事&group=保龄球。
默认情况下,参数名称和值是URL编码的。指定encoded=true以更改此行为
示例4:
@GET("/friends")
Call<ResponseBody> friends(@Query("page") int page);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String group);
@GET("/friends")
Call<ResponseBody> friends(@Query("group") String... groups);
@GET("/friends")
Call<ResponseBody> friends(@Query(value="group", encoded=true) String group);
@GET(“/friends”)
呼叫好友(@Query(value=“group”,encoded=true)字符串组);
使用foo.friends(“foo+bar”)调用会产生/friends?group=foo+bar。在您的方法中,当您使用@Path参数时,它会将此参数添加到您的URL中。例如,URL/login?usr=john将是@GET(“/login”)void myMethod(@Path(“usr”)字符串usr)的结果调用该方法时,将“usr”arg设置为“john”,我尝试了您的解决方案,但出现以下错误:Reformation.ReformationError:InterfaceUser.retrieveUsersByFilters:@Path参数名称必须匹配\{([a-zA-Z][a-zA-Z0-9\-]*)\。找到:筛选[0][field](参数#1)这些死链接..:(链接不再适用于Javadoc:-/。还有其他链接吗?这个问题中的url非常复杂-建议您阅读该文档。服务提供商需要在HTTP GET末尾使用json定义,如下所示,以避免XML默认值。这是如何使用Reformation2实现的?