改造调用请求只接收消息部分,不接收正文部分

Retrofit call request only receiving message part, not body part

对我的代码进行一些更改后,我可以向 API 发送改造请求。

现在的问题是我只收到响应的消息部分,而不是正文部分。 这是界面:

public interface JsonPlaceHolderApi {

    @GET("posts")
    Call<List<Post>> getPosts();

    @FormUrlEncoded
    @POST("token")
    Call <ResponseBody> createLoginRequest(@Field("username") String username,
                                          @Field("password") String password,
                                          @Field("grant_type") String grant_type,
                                          @Field("latitude") String latitude,
                                          @Field("longitude") String longitude

                                          );
}

这是请求部分:

 private void login_Request() {


        Log.d("ESTOY EN LOGIN REQUEST", "ESTOY EN LOGIN REQUEST");

        JsonPlaceHolderApi jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class);


        Call<ResponseBody> call = jsonPlaceHolderApi.createLoginRequest("HALEJANDRO", "ALEJANDR0123", "password", "19.4953148", "-99.1131595");

        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                Log.d("ESTOY EN LOGIN REQUEST", "ESTOY EN LOGIN REQUEST success "+response);




            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.d("ESTOY EN LOGIN REQUEST", "ESTOY EN LOGIN REQUEST error");
            }
        });


    }

这是收到的回复:

Response{protocol=http/1.1, code=200, message=OK, url=http://10.....:5000/token}

我需要获取正文部分才能进一步处理接收到的数据。

编辑

使用 rest api 客户端收到的响应,如邮递员,如下所示:

您将使用 response.body() 获得响应正文。

像这样:

call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                if (response.isSuccessful()) {
                    String object = response.body().string();
                    Log.d("response string.....", object);
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {

            }
        });

你为什么不简单地解组响应?

public class MLoginResponse {

    @SerializedName(value="access_token")
    public String accessToken;

    @SerializedName(value="token_type")
    public String tokenType;

    @SerializedName(value="expires_in")
    public Long expiresIn;

    public String twoFactory;

    @SerializedName(value=".issued")
    public String issued;

    @SerializedName(value=".expires")
    public String expires;

}

您的请求应如下所示:

@FormUrlEncoded
@POST("token")
Call<MLoginResponse> createLoginRequest(...);