android - 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)
解决方案
您要实现的是请求的动态路径。
为了满足这一点,@Path
Retrofit 提供了注释,您可以在此处阅读更多相关信息。
将其用作:
@GET("{path}")
Call<JsonElement> getclientbalance(
@Query("pin") String mobileNo,
@Path("path") String yourPath
);
的目的@Path
是提供动态请求 URL。例如,基于用户用户名的单独请求 URL。
它还具有编码或不编码 URL 的功能,请阅读上面提供的链接以了解更多信息。
推荐阅读
- video - 如何使用选定的音频流将视频转换为 hls?
- uinavigationbar - 为什么不透明和透明 UINavigationBarAppearance 的 view.safeAreaInset 相同?
- reactjs - SIP 与 JS 中的呼叫会议集成
- flutter - Webview颤动android兼容minSDK问题
- sql - 空日期返回 1900-01-01
- flutter - Flutter:如何获取 Draggable 的左上角?
- python - 从字典中删除双引号
- recursion - 递归函数的时间复杂度,在每一步将输入大小减小到 floor(n/2)
- mysql - 我想要 sql 查询来更改会员状态
- eclipse-plugin - 从活动目标平台导入片段的问题