Ошибка кодирования URL в Retrofit 2.0

 @GET("images")
 Call<Example> getimages(@Query("where=item_id") int item_id);

Когда я использую это, знак равенства после где кодирует в%3D, который мой сервер не принимает. Я хочу = символ после где в моем вызове API.

А моя ссылка на картинки? Где =item_id=1

2 ответа

Решение

Попробуйте так:

@GET("images")
Call<Example> getimages(@Query("where") String item_id);

Когда вы вызываете этот метод, вы должны пройти этот путь:

Service service = retrofit.create(Service.class);
Call<Example> call = service.getimages("item_id=1");

Если вы можете вызвать Api успешно, вы можете передать значение динамически, используя конкатенацию строк.

Причина: при передаче параметров запроса нужно просто записать параметр запроса в @Query("") и значение ему будет присвоено во время выполнения, когда вы вызовете этот метод и передадите значение параметру "item_id" getimages метод.

Чтобы узнать больше о модернизации, перейдите по этой ссылке: https://futurestud.io/tutorials/tag/retrofit

Добавьте закодированный флаг.

@GET("images")
Call<Example> getimages(@Query("where=item_id", encoded = true) String item_id);

и закодируйте item_id, прежде чем передать его этому методу.

Другие вопросы по тегам