2015-10-23 8 views
0

В retrofit 2.0 я хочу использовать только один url. URL-адрес такой же, как и базовый url, как и для @GET в интерфейсе. Я столкнулся с проблемой получения ответа. Если у кого-то есть лучшее решение для использования всего URL-адреса в @GET, пожалуйста, предложите решение. здесь кодRetrofit 2.0 beta 1 с целым URL

public class RestClient { 

     private static ApiInterface apiInterface ; 

     private static String baseUrl = "here is my whole base url"; 



     public static ApiInterface getClient() { 
      if (apiInterface == null) { 

       OkHttpClient okClient = new OkHttpClient(); 
       okClient.interceptors().add(new Interceptor() { 
        @Override 
        public Response intercept(Chain chain) throws IOException { 
         Response response = chain.proceed(chain.request()); 

         return response; 
        } 
       }); 

       Retrofit client = new Retrofit.Builder() 
         .baseUrl(baseUrl) 
         .addConverter(String.class, new ToStringConverter()) 
         .client(okClient) 
         .addConverterFactory(GsonConverterFactory.create()) 
         .build(); 
       apiInterface = client.create(ApiInterface.class); 
       Log.e("RETROFIT RESPONCE IS...", client.toString()); 

      } 
      return ApiInterface ; 
     } 

    public interface ApiInterface { 

      @Headers("User-Agent: Retrofit2.0Tutorial-App") 
      @GET("here is my whole base url”) 
      Call<EventResult> getEvent(); 
    } 
} 
+0

Предоставьте свой код и укажите, где проблема. – ytRino

ответ

0

Я не думаю, что это возможно, так как BaseUrl является обязательным в Retrofit Builder и даже вы поставляете строитель с полной URL строитель будет разобрать его и сохранить только BaseUrl. Я думаю, причина, по которой они делают это, заключается в том, чтобы держать его простым и последовательным.

для справки вы можете увидеть исходный код here

3

С дооснащения 2 можно использовать @Url аннотацию. Давайте предположим, что конфигурация Дооснащаемой является

Retrofit builder = new Retrofit.Builder() 
       .baseUrl("http://wwww.example.com") 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 
Test r = builder.create(Test.class); 

вы объявите свой интерфейс:

public interface Test { 
     @GET 
     Call<Example> getTest(@Url String url); 
} 

и getTest вы не хотите использовать BaseUrl вы объявленный в конфигурации. @Url проигнорирует объявленный baseUrl и будет использовать тот, который вы указываете как аргумент

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