Я получаю странный ответ в Retrofit с протоколом = http / 1.1, code = 200 - PullRequest
0 голосов
/ 25 сентября 2018

Когда я использую Retrofit для вызова Login API, я сталкиваюсь с небольшой проблемой: тело ответа пустое.И ответное сообщение содержит это сообщение:

"Ответ {протокол = http / 1.1, код = 200, сообщение = ОК, URL = http://gagron.com/api/login.php}"

интерфейс класса

public interface getLoginDataService {
        public String BaseURL = Constants.mBase_Url;
        @FormUrlEncoded
        @POST(Constants.mLogin)
        Call<UserModel> login(@Field("email") String email, @Field("password") String password);
    }

Метод входа в систему

public void loginConnector(String email, String password) {

    Retrofit retrofit = new Retrofit.Builder().baseUrl(Connectors.getLoginDataService.BaseURL)
            .addConverterFactory(GsonConverterFactory.create(new Gson())).build();
    Connectors.getLoginDataService getLoginDataService = retrofit.create(Connectors.getLoginDataService.class);
    getLoginDataService.login(email, password).enqueue(new Callback<UserModel>() {
        @Override
        public void onResponse(Call<UserModel> call, Response<UserModel> response) {

            UserModel model= response.body();

            Log.i("Successmsg", "" + response.toString());
            Log.i("Successmsg1", "" + model.getFirstName());
            ;


        }

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

            Log.i("Errormsg", t.getMessage() + "");

        }
    });
}

И, наконец, пользовательская модель, учитывающая Ответ.

Класс UserModel

public class UserModel {


    @SerializedName("FirstName")
    @Expose
    private String firstName;
    @SerializedName("LastName")
    @Expose
    private String lastName;
    @SerializedName("Email")
    @Expose
    private String email;
    @SerializedName("Mobile")
    @Expose
    private String mobile;
    @SerializedName("Gender")
    @Expose
    private String gender;
    @SerializedName("Password")
    @Expose
    private String password;
    @SerializedName("Salt")
    @Expose
    private String salt;
    @SerializedName("Address")
    @Expose
    private String address;
    @SerializedName("PostalCode")
    @Expose
    private String postalCode;
    @SerializedName("DateOfBirth")
    @Expose
    private String dateOfBirth;
    @SerializedName("role")
    @Expose
    private String role;
    @SerializedName("newsletter")
    @Expose
    private String newsletter;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSalt() {
        return salt;
    }

    public void setSalt(String salt) {
        this.salt = salt;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPostalCode() {
        return postalCode;
    }

    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    public String getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(String dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public String getNewsletter() {
        return newsletter;
    }

    public void setNewsletter(String newsletter) {
        this.newsletter = newsletter;
    }

}

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

внутри вашего onResponse добавить

if (response.isSuccessful()) {

                if (response.body() != null) {UserModel model= response.body();

        Log.i("Successmsg", "" + response.toString());
        Log.i("Successmsg1", "" + model.getFirstName());
                }

            } else {
                Toast.makeText(LoginSM.this, getString(R.string.wrongdata), Toast.LENGTH_SHORT).show();
            }
0 голосов
/ 25 сентября 2018

В вашем методе loginConnector вы можете использовать call.request().url() для отображения / отладки URL-адреса запроса, который вы вызываете.

Кроме того, вы можете использовать REST-клиент для отправки POST-запроса на этот URL-адрес и проверкиРазница между обоими ответами.В настоящее время Клиент Insomnia REST является хорошим вариантом для этого.

Я надеюсь, что это может помочь вам.

...