2015-10-14 1 views
2

Недавно я попытался обновить с Retrofit 2.0 beta 1 до бета-версии 2, обновил весь свой код и заметил одну разницу, которая блокирует мой прогресс.Retrofit 2.0 Beta 2 - проблема с кодировкой Path?

У меня есть прецедент, где мне нужно динамически предоставлять компоненты пути к конечной точке, и для этого я использую переменную замещения Path.

Например:

@GET("/foo/bar/{sub}") 
public Call<SomeObject> fooBar(
    @Path(value = "{sub}", encoded=true) String subPath 
} 

(извинения, если синтаксис является менее совершенным, но вы получите суть).

в бета-версии 1, я мог установить Subpath на что-то вроде «привет/мира» и в результате конечной точки будет «/foo/bar/hello/world»

в бета-версии 2, независимо от значения «закодированного», он автоматически кодирующим вход. поэтому я получаю «/foo/bar/hello%2Fworld»

Было ли изменение в обработке предварительно закодированных входов между бета-1 и бета-2, или это просто ошибка?

спасибо.

+1

Вы должны иметь '@GET (" foo/bar/{sub} ")' и '/' в конце вашего базового URL-адреса, иначе вы столкнетесь с неожиданными проблемами с новым странным «HttpResolve» Retrofit 2.0, система, которая, на мой взгляд, вызывает совершенно новую область ошибок. – EpicPandaForce

+0

Да, мой «настоящий» код выполнен таким образом, thx. –

ответ

4

Это known issue с retrofit2-beta2.

Разработчики ищут различные решения, но неясно, будет ли или когда оно будет рассмотрено. В то же время, как понижение до бета-версии 1 или изменения, чтобы с помощью параметра @url вместо @Path, как это было предложено на Github:

@GET 
public Call<SomeObject> fooBar(
    @Url String subPath 
} 

затем:

fooBar("/foo/bar/" + subPath); 

Это чувствует себя очень Hacky ко мне, слишком. Надеюсь, это будет исправлено в будущих версиях модификации.

+0

Спасибо, Люк. На данный момент я понижен, но попробую ваше предложение. –

+0

Спасибо, вы сэкономите мое время)) –

Смежные вопросы