2016-11-30 5 views
2

У меня есть веб-сервис restfull, который работает на локальном хосте. Я хотел бы сделать запрос retrofit2 GET на этот URL-адрес для отдыха.как сделать запрос GET с помощью retrofit2?

MainActivity.java

private void requestData() { 
     public static final String BASE_URL = "http://192.168.0.103:8080/SpringWithHibernate/users/"; 
     Toast.makeText(MainActivity.this, "In requestData() :: " + "ddd", Toast.LENGTH_LONG).show(); 

     Gson gson = new GsonBuilder().create(); 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(BASE_URL) 
       .addConverterFactory(GsonConverterFactory.create(gson)) 
       .build(); 

     GetUserListAPI api = retrofit.create(GetUserListAPI.class); 

     api.getUsersList().enqueue(new Callback<List<UserPojo>>() { 
      @Override 
      public void onResponse(Call<List<UserPojo>> call, Response<List<UserPojo>> response) { 
       Log.d("UserList :: ", "Success"); 
       Log.d("UserList :: ", "Code :: " + response.code()); 

       user = response.body(); 

//    Log.d("UserList :: ", "count :: " + user.size()); 

//    Log.d("UserList :: ", "Result :: " + user.get(1).getUsername()); 
      } 

      @Override 
      public void onFailure(Call<List<UserPojo>> call, Throwable t) { 
       Log.d("UserList :: ", "Failure"); 
      } 
     }); 

    } 

GetUserListAPI.java интерфейс:

public interface GetUserListAPI { 
    @GET("/users") 
    Call<List<UserPojo>> getUsersList(); 
} 

Когда я сделать вызов requestData() метод я получаю response.code (404) в качестве .

Может ли кто-нибудь помочь мне, где я должен был ошибиться?

Thanks & С уважением.

+0

Можете ли вы использовать этот URL-адрес и проверить ответ -> http://demo1874861.mockable.io/ – AndiGeeky

+2

make String BASE_URL = "http://192.168.0.103:8080/SpringWithHibernate/" означает без "users /" в BASE_URL –

+1

и использовать в методе интерфейса, подобном этому '@GET (« users ») Вызов <Список > getUsersList();' – sushildlh

ответ

3

Ваш BaseUrl содержит/пользователей в end.It должны быть удалены, как он будет получен приложением от inerface @GET («/ пользователей») Ваши BaseUrl должны быть

public static final String BASE_URL = "http://192.168.0.103:8080/SpringWithHibernate/" 

и Интерфейс

public interface GetUserListAPI { 
    @GET("users") 
    Call<List<UserPojo>> getUsersList(); 
} 
+0

выше, один из них дает вам ошибку базового URL-адреса, заканчивается '/' ..... – sushildlh

+0

remove /, добавить/перед пользователем в интерфейсе, как я написал выше –

+0

, вы добавляете в конец BaseUrl 'http: //192.168 .0.103: 8080/SpringWithHibernate/'и использовать это в интерфейсе ....' @GET («users») ' – sushildlh

0

Если вы получаете ошибку 404, это не связано с модификацией, ее проблема с базой данных. Является ли этот веб-сервис в настоящее время активным? Но я нашел еще один вопрос в запросе, который является то, что

public static final String BASE_URL = "http://192.168.0.103:8080/SpringWithHibernate/users/"; 

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

@GET("/users") 

Таким образом, комбинированный URL приведет к

http://192.168.0.103:8080/SpringWithHibernate/users/users 

Что Неправильно, вы должны объявить свой базовый url в именах строк и сервисов в методах переопределения интерфейса.

+0

выше одного не работает .... он дает вам ошибку 404 ... – sushildlh

+0

Да, .. путем удаления/из интерфейса @GET («пользователи») работает для меня. Спасибо всем, кто находится под этим разговором. – Jaccs

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