改进GET查询将equalTo(=)转换为\ u003d

时间:2018-04-12 10:41:55

标签: android api retrofit2

我有

的GET api

http://xxxxx/Status?taxYear=2017

响应= “IsValid”:true

但是Retrofit Query正在将URL转换为

http://xxxxx/Status?taxYear\u003d2017

响应= “IsValid”:false

这会导致错误的API响应。我尝试了Querymap和所有,帮帮我。

3 个答案:

答案 0 :(得分:0)

不要在Retrofit端点中使用查询。您必须使用像这样的查询注释......

methodName(@Query(encoded = true, value = "taxYear") String filter)

也许"编码"参数可以是false或删除(false是默认值)。

答案 1 :(得分:0)

您还可以在网址中指定查询参数。

@GET("xxxxx/Status?taxYear=2017") 
Call<ResponseBody> methodName();

或其他方式是:

@GET("xxxxx/Status?taxYear={year}")
Call<ResponseBody> methodName(@Path("year") String year);

答案 2 :(得分:0)

定义基本网址,如

@GET("Status")
Call<YourModelClass> yourRequestMethodName(@Query("taxYear") String yourYear);

如果你定义一个调用请求的接口而不是试试这个

Call<YourModelClass> call = yourRetrofitClientName.yourRequestMethodName("2017");
        call.enqueue(new Callback<YourModelClass>() {
            @Override
            public void onResponse(Call<YourModelClass> call, Response<YourModelClass> response) {

                //Handle your response here
            }

            @Override
            public void onFailure(Call<YourModelClass> call, Throwable t) {
               //Handle your error here
            }
        });

调用上面的定义方法,如

 <sessionState cookieless="false" timeout="30" mode="InProc"/>
  <authentication mode="Forms">
      <forms name="AppRootForms" loginUrl="LoginPage.aspx" protection="All" timeout="30" path="/" slidingExpiration="true"/>
    </authentication>
<system.webServer>
     <!--<max limit for storing session />-->
    <asp>
         <session allowSessionState="true" max="100000" timeout="00:30:00" />
    </asp>
</system.webServer>