首页 > 解决方案 > Android studio报错:元素值常量表达式

问题描述

我正在尝试设置 @GET 的值,如果我输入直接值,我的 API 调用工作正常,但如果我尝试从其他类获取该值,它给我的错误元素值必须是一个常量表达式

API http://49.12.80.197/Vokka/getclientbalance.do?pin=923338875585

如果我写 @GET("getclientbalance.do") API 调用工作正常

任何解决方案>?

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;


public class ApiClient {


    public static String BASE_URL = "http://49.12.80.197/Vokka/";
    public static String balance = "getclientbalance.do";
   

API接口

import com.google.gson.JsonElement;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
import retrofit2.http.Url;

import static com.kkdialer.voip.ApiClient.balance;

public interface ApiInterface {

    @GET(value = balance)
    Call<JsonElement> getclientbalance(@Query("pin") String mobileNo);

}

错误:元素值必须是常量表达式 @GET(value = balance)

标签: androidjson

解决方案


您要实现的是请求的动态路径。

为了满足这一点,@PathRetrofit 提供了注释,您可以在此处阅读更多相关信息。

将其用作:

@GET("{path}")
Call<JsonElement> getclientbalance(
    @Query("pin") String mobileNo,
    @Path("path") String yourPath
);

的目的@Path是提供动态请求 URL。例如,基于用户用户名的单独请求 URL。

它还具有编码或不编码 URL 的功能,请阅读上面提供的链接以了解更多信息。


推荐阅读