Дооснащение запросом на вызов только получение части сообщения, а не части тела - PullRequest
0 голосов
/ 19 марта 2020

После некоторых изменений в моем коде я могу отправить запрос на модификацию в 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}

Мне нужно получить часть тела для дальнейшей работы с полученными данными.

РЕДАКТИРОВАТЬ

Ответ, полученный с помощью клиента API остальных, как почтальон, выглядит следующим образом:

enter image description here

Ответы [ 2 ]

1 голос
/ 19 марта 2020

Вы получите тело ответа, используя 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) {

            }
        });
0 голосов
/ 19 марта 2020

Почему бы вам просто не разобрать ответ?

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(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...