2017-06-29 22 views
0

我有這個API返回用戶的信息,但返回的json文件返回一個空白的主體。 的API請求:用戶令牌,用戶ID 的API響應:一資料對象Android Retrofit - API調用返回空白主體

API:

https://aujhfd1x3c.execute-api.us-east-1.amazonaws.com/staging/users/{id} 

接口方法:

@GET("/staging/users/{id}") 
    Call<Profile> getUserInfo(@Header("Authorization") String token, @Path("id") String id); 

我是如何調用API:

private void getUserInfo() 
    { 
     Log.d("Give me", "getUserInfo"); 
     Retrofit retrofit_getUserInfo = new Retrofit.Builder() 
       .baseUrl("https://aujhfd1x3c.execute-api.us-east-1.amazonaws.com/") 
       .addConverterFactory(GsonConverterFactory.create()) 
       .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
       .build(); 
     SoceroAPI api_getUserInfo = retrofit_getUserInfo.create(SoceroAPI.class); 

     api_getUserInfo.getUserInfo(baroServiceProvider.getAuthToken().getToken(), inAppDatabase_userInfo.getData("user_ID")) 
       .enqueue(new Callback<Profile>() 
       { 
        @Override 
        public void onResponse(Call<Profile> call, Response<Profile> response) 
        { 
         Log.d("Give user info json", new GsonBuilder().setPrettyPrinting().create().toJson(response)); 
         Log.d("Give me user info: ", "getUserInfo: onResponse: " + inAppDatabase_userInfo.getData("user_ID")); 
         Log.d("Give me first n now!!!", response.body().getFirstName()+""); 
        } 

        @Override 
        public void onFailure(Call<Profile> call, Throwable throwable) 
        { 
         throwable.printStackTrace(); 
        } 
       }); 
    } 

日誌:

"body":{ }, 
    "rawResponse":{ 
     "body":{ 
     "contentLength":640, 
     "contentType":{ 
      "mediaType":"application/json", 
      "subtype":"json", 
      "type":"application" 
     } 
     }, 
     "code":200, 
     "handshake":{ 
     "cipherSuite":{ 
      "javaName":"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" 
     },............................................ 

正如你所看到的,身體是空白的"body":{ }。因此,當我試圖打印出用戶的名字時,它給了我一個null值。 我檢查了API是否工作郵遞員和工作。 我也很確定我的令牌ID和用戶ID是正確的。

+1

在使用任何變量之前,您應該提取'final Profile profile = response.body();'。 –

+1

響應已轉換爲'Profile'pojo – king

+1

無需額外轉換,然後使用Profile profile = response.body();獲取配置文件。 – king

回答

0

您是否可以通過測試其他客戶端來確認api是否正確響應...還請確保授權和用戶標識是有效的。代碼似乎沒有錯誤。確保API端點工作正常。