【发布时间】:2026-01-02 10:55:02
【问题描述】:
0) 我正在使用 Retrofit 2 来处理 Bank API。
1)我有一些界面:
public interface ApiService {
@GET("statdirectory/exchange")
Call<List<MyModel>> getСurrency(@Query("date") String inputDate);
}
2) 当我调用 getСurrency(someParametr) 方法时,其中 someParametr 是字符串,包含“date&json”(例如,“20170917&json”):
ApiService apiService = RetrofitController.getApi();
apiService.getCurrency("20170917&json").enqueue(new Callback<List<MyModel>>() {
@Override
public void onResponse(Call<List<MyModel>> call, Response<List<MyModel>> response) {
call.request().url();
Log.e("URL", call.request().url()+"");
response.code();
Log.e("CODE", response.code()+"");
}
//.....
3) 我明白了:
URL:"https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?date=20170917%26json"(&被%26代替)
代码:“404”
4)我的界面我添加了encoded:
getСurrency(@Query(value="date", encoded=false) String inputDate);
但我的结果与第 3 步中的结果相同!
5) 如何检查这个问题?如何在我的字符串上获取没有 %26 的 URL?我阅读了其他类似问题的问题,但没有解决我的问题。谢谢!
【问题讨论】:
-
为什么会出现这个问题?为什么你有一个没有值的参数
json? -
@TimCastelijns,我的完整代码是有效的,但我不知道为什么我的 URL 20170917&json 编码为 20170917%26json 以及如何修复它.
-
您要解决什么问题?你知道什么是url编码吗?
-
@TimCastelijns,对url编码有点熟悉。我能用这个做什么?
-
@Tomas 您需要手动构建 url 查询将无法正常工作,如我帖子中指出的 github 问题中所述
标签: java android json retrofit2