2016-01-29 2 views
4

У меня есть новый Android-проект, над которым я работаю, и Retrofit2 отлично работает для меня. Тем не менее, у меня есть один URL-адрес, который мне нужно нажать, с одной из двух строк, поверх данных, которые я отправляю.Retrofit2 Данные статической кодированной формы?

Прямо сейчас это выглядит следующим образом:

@FormUrlEncoded 
@POST("token") 
Call<AccessResponse> requestAccess(@Field("grant_type") String type, @Field("code") String authCode, @Field("client_id") String ApiKey); 

тип грант только одна из двух вещей, и я хотел бы, чтобы абстрагировать прочь, в статические адреса, как это:

@FormUrlEncoded 
@POST("token") 
@Field("grant_type","type1") 
Call<AccessResponse> requestAccess(@Field("code") String authCode, @Field("client_id") String ApiKey); 

@FormUrlEncoded 
@POST("token") 
@Field("grant_type","type2") 
Call<AccessResponse> refreshAccess(@Field("code") String authCode, @Field("client_id") String ApiKey); 

Есть ли способ сделать это? мои 2 дня google-fu не работали для меня и не просматривали документы и код API. Я просто не хочу отслеживать правильную строку в разных местах моего кода.

ответ

0

Выключает ответ: «Вы не можете прямо сейчас».

Существует open issue on Github запроса художественных

Существует альтернативный подход, объект FieldMap с примером метода, как указано в this SO post, но это не совсем то, что я искал, и избыточна для всего один поле.

+0

Похоже, они никогда не будут поддерживать его или. Бу. Джейк Уортон отпустил меня. – mix3d

0

Может ли запрос на доработку выполнить запрос? Он может вводить параметры в каждый запрос ... поэтому оттуда можно было возможно написать метод, который вводит правильный параметр в зависимости от того, что вы пытаетесь сделать ...

RequestInterceptor requestInterceptor = new RequestInterceptor() { 
     @Override 
     public void intercept(RequestFacade request) { 
      request.addQueryParam("grant_type", getGrantType()); 
     } 
}; 
private String getGrantType() 
{ 
    // do your stuff and : 
    return "type1"; // or "type2" 
} 
+0

Если бы я выполнял параметры запроса, это могло бы работать, но как насчет добавления данных формы? – mix3d

+0

Параметры запроса могут быть добавлены непосредственно через определение @GET в соответствии с их документами, например '@GET (« users/list? Param = static »), но это все еще не помогает цели данных формы. Подобно состояниям запросов функций на github, пока нет простого способа сделать это. – mix3d