Ошибка повторной установки URL-адреса запроса URL-адреса не должна быть заменена блоком
У меня есть эта функция
@GET("/users?filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}")
UserDto retrieveUsersByFilters(@Path("param") String nameFilter, @Path("value") String value);
Я пытаюсь называть его вот так:
UserDto currentUser = interfaceUser.retrieveUsersByFilters(User.LOGIN, login);
Но у меня есть ошибка:
retrofit.RetrofitError: InterfaceUser.retrieveUsersByFilters: строка URL-запроса "фильтры [0] [поле] = {param} & фильтры [0] [operator] = равно & фильтры [0] [значение] = {значение}" не должен иметь блок замены.
Я уже тестирую url на firefox, и он отлично работает.
Спасибо за ваши отзывы
Изменить
Решение:
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
@Query("filters[0][field]") String nameFilter,
@Query("filters[0][value]") String value);
Ответы
Ответ 1
Параметры запроса имеют собственную аннотацию, которая автоматически добавляется к URL-адресу.
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
@Query("filters[0][field]") String nameFilter,
@Query("filters[0][value]") String value);
Вы можете узнать больше о @Query
на его Javadoc
Ответ 2
URL="/api-mobile_prateek2.php?method=getProductById&pid="
@GET("/api-mobile_prateek2.php?method=getProductById")
Call<Product> responseproduct(@Query("pid") String pid);
не помещайте pid в @GET, Retrofit автоматически фиксирует URL-адрес, используя @Query
Ответ 3
Не помещайте свои значения прямо в путь, но предпочитайте подпись метода.
Не совсем уверен, но попробуйте что-то вроде этого:
@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(@Path("filters[0][field]") String nameFilter, @Path("filters[0][value]") String value);