Как получить данные из формата String, которые успешно преобразуются в API входа в систему? - PullRequest
0 голосов
/ 21 февраля 2020

Пожалуйста, прочитайте этот вопрос, который я задаю раньше, чем через несколько часов: Как возможно, что POST API работает в Postman, но не в модификации?

На самом деле, из ответа Retrofit, Я получаю ответ в формате String от объекта ResponseBody.

Объяснение: Мой код состояния - 200, успешно, но из тела ответа - только String. Как я могу получить все данные из этой строки?

После успешного входа в систему я получаю строку в onResponse. Я уже отправляю учетные данные пользователя на этот APi, и в ответ API я получаю эту строку.

Может быть, есть что-то кодирующее декодирование с отношением base64.

1 Ответ

0 голосов
/ 21 февраля 2020
public class LoginModel {

    @SerializedName("body")
    private Body body;

    public Body getBody() {
        return body;
    }

    public static class Body {
        @SerializedName("userPwd")
        private String userpwd;
        @SerializedName("prodId")
        private int prodid;
        @SerializedName("emailId")
        private String emailid;
        @SerializedName("customerId")
        private int customerid;

        public String getUserpwd() {
            return userpwd;
        }

        public int getProdid() {
            return prodid;
        }

        public String getEmailid() {
            return emailid;
        }

        public int getCustomerid() {
            return customerid;
        }
    }
}

Теперь, если вы следовали этот ответ вы retrofit интерфейс выглядит примерно так

@Headers("Content-Type: application/json")
@POST("login/desktop/user")
Call<ResponseBody> getToken(@Body HashMap<String, HashMap<String, Object>> data);

измените его на

@Headers("Content-Type: application/json")
@POST("login/desktop/user")
Call<LoginModel> getToken(@Body HashMap<String, HashMap<String, Object>> data); // change here

Сейчас вы можете получить свои данные в onResponse(), как это

LoginModel loginData = response.body();

String pswd = loginData.getBody().getUserpwd();

PS = если вы можете изменить ответ, я предлагаю вам изменить var body из ответа на что-то еще, например data.

SerializedName используемые в POJO классе не важны, читайте о них здесь

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...