改造 GET 请求调用

Retroft GET Request Call

有很多例子,但我没有找到我真正想要的(没明白)所以如果有人愿意提供帮助,我们将不胜感激。

使用 post 我知道我们会执行以下操作:

@POST("/SearchFor")
    @FormUrlEncoded
    void SearchFor(@Field("QueryID")String  QueryID,@Field("ElementID")String  ElementID,@Field("Language")String  Language, Callback<Response> cb);

然后在成功和失败时实施。

现在开始获取:

我想要作为输出的 URL 是:

 URL+=BASE_URL+"?QueryID="+ID+"&ElementID=where%20"+INPUTFLDDBNAME+"%20like'%25"+Value+"%25'&Language="+interfacelang+"";

ID,INPUTFLDDBNAME,interfacelang 将替换为字符串

所以我做了以下事情:

 @GET("/QueryID={QueryID}&ElementID=where%20{ElementID}%20like'%25{Value}%25'&Language={Language}")
    void SearchFor(@Path("QueryID")String  QueryID,@Path("ElementID")String  ElementID,@Path("Value")String  Value,@Path("Language")String  Language, Callback<Response> cb);

但显然它不起作用并出现以下错误:

No Retrofit annotation found. (parameter #1)

我是这样称呼它的

Retrofit Retrofit=new Retrofit();
                    RestAPI PushNotificationWebService=Retrofit.SetRestAdapter("BASE_URL");
                    PushNotificationWebService.SearchFor(ID,fields.get(0).getText().toString(),INPUTFLDDBNAME,interfacelang,new Callback<Response>() {
                        @Override
                        public void success(Response response, Response response2) {
...

请有人指导我,将不胜感激。

您应该使用 @Query() 将查询参数添加到您的基础 URL

@GET("/SearchFor")
void SearchFor(@Query("QueryID") String QueryID, @Query("ElementID") String ElementID,@Query("Language") String Language, Callback<Response> cb)

然后按照以下方式使用:

String element = URLEncoder.encode(String.format("where %s like'%%%s%%'", element_id, value));
PushNotificationWebService.SearchFor(ID, element, ...)