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是正確的。
在使用任何變量之前,您應該提取'final Profile profile = response.body();'。 –
響應已轉換爲'Profile'pojo – king
無需額外轉換,然後使用Profile profile = response.body();獲取配置文件。 – king