2016-11-30 118 views
2

我有一個運行在本地主機上的restfull web服務。我想對該剩餘的URL進行retrofit2 GET請求。如何使用retrofit2做GET請求?

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呼叫。

任何人都可以幫助我,我應該在哪裏誤會?

謝謝&關心。

+0

你可以使用這個URL並檢查響應 - > http://demo1874861.mockable.io/ – AndiGeeky

+2

make String BASE_URL =「http://192.168.0.103:8080/SpringWithHibernate/」表示BASE_URL中沒有「users /」 –

+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

刪除/,添加/在用戶接口中,因爲我已經在上面寫了 –

+0

你在BaseUrl'http://192.168末尾添加.0.103:8080/SpringWithHibernate /'並且在界面中使用像這樣....'@GET(「users」)' – sushildlh

0

如果您得到404錯誤,它與改造,後端問題沒有關聯。那個webservice目前是活躍的嗎? 但是我發現你的要求,這是

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

,並在改造的界面,你已經宣佈

@GET("/users") 

另一個問題,因此合併URL將導致

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

哪個不正確的,你應該只在改進的接口方法中聲明你的基址和字符串中的服務名稱。

+0

以上一個不工作....它給你404錯誤... – sushildlh

+0

是的,..通過刪除/從接口@GET(「用戶」)是爲我工作。感謝所有參與此次談話的人。 – Jaccs