2016-07-15 1 views
2

Я использую Retrofit2 для разбора API.java.lang.IllegalArgumentException: baseUrl должен завершаться в/while с использованием retrofit 2.1.0 для метода GET

При использовании retrofit1.9.0 как посты, так и методы получения работают исправно. Но использование retrofit 2.1.0, в методе GET, есть ошибка:

java.lang.IllegalArgumentException: baseUrl must end in /

Я проверил мой код, и нет никаких проблем, он работает для метода поста.

Retrofit retrofit= new Retrofit.Builder() 
         .baseUrl("sample.com/ecomtest/index.php?route=api/") 
         .addConverterFactory(GsonConverterFactory.create()) 
         .build(); 
+0

Пожалуйста, добавьте соответствующий код , –

+0

Пожалуйста, не забывайте делиться некоторым соответствующим кодом, который может помочь людям быстро решить проблему. – Manish

+0

Ретрофит Модифицированная = новый Retrofit.Builder() .baseUrl ("http://sample.com/ecomtest/index.php?route=api/") .addConverterFactory (GsonConverterFactory.create()) .build() ; – Prasanth

ответ

4

URL, вы прошли, как API_BASE_URL должны заканчиваться «/», так что добавьте его в конце вашего URL.

Retrofit.Builder builder = 
     new Retrofit.Builder() 
        .baseUrl(API_BASE_URL) 
        .addConverterFactory(GsonConverterFactory.create()); 

где

String API_BASE_URL = "http://www.domain.com/"; //string end with "/" 

он будет работать.

+0

Я также проверил этот сценарий, но все же проблема возникает – Prasanth

+1

вы добавляете «/» после «?» в URL, это означает, что он идет как параметр. «sample.com/ecomtest/» и передать маршрут в параметр. – RBK

+0

спасибо RBK, но проблема возникает при использовании в retrofit1, она отлично работает для одного и того же base_url = "sample.com/ecomtest/index.php?route = api/" – Prasanth

3

'?' не может в baseUrl, вы должны перенести его в интерфейс API. как это.

Полный URL: https://free-api.heweather.com/v5/now? city=yourcity&key=yourkey

так, baseUrl = "https://free-api.heweather.com/v5/"

и интерфейс API

@GET("now?") 
Observable<HeWeather5> getNowWeather(@Query("city") String city,@Query("key") String key); 
-2

Эй решить эту ошибку я это URL = "URL/" that "/" сделать концовку и РАБОТУ !!

+1

Это не дает ответа на вопрос. После того, как у вас будет достаточно [репутации] (https://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любую запись] (https://stackoverflow.com/help/privileges/comment); вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (https://meta.stackexchange.com/questions/214173/why-do-i -need-50-репутация-к-комментарии-что-может-я-делать-вместо этого). [От обзора] (/ review/low-quality-posts/18074251) – JimHawkins

0

В модификации вы не можете использовать конечные точки, например «некоторые?». в базовом URL. Split вы URL, как

String url="http://sample.com/ecomtest/index.php?route=api/"; 
String baseUrl=url.split(".com/")[0]+".com/"; 
String queryUrl=url.split(".com")[1]; 

затем использовать

Retrofit.Builder builder = 
     new Retrofit.Builder() 
        .baseUrl(baseUrl) 
        .addConverterFactory(GsonConverterFactory.create()); 

и передать вам конечную точку в качестве пути для запроса метод, как

@GET("{endpoint}") 
    Call<Response> getData(@Path("endpoint") String endpoint); 

и сделал

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