Android Retrofit - API调用返回空白正文

时间:2017-06-29 18:02:27

标签: android json api http retrofit

我有这个API返回用户的信息,但返回的json文件返回一个空白的主体。 API请求:用户令牌,用户ID API响应:Profile对象

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 个答案:

答案 0 :(得分:0)

您是否可以通过其他客户端测试来确认api是否正确响应...还要确保授权和用户ID有效。代码似乎没有错误。确保API端点运行良好。