簡體   English   中英

我在 Retrofit 中得到了奇怪的響應,協議=http/1.1,代碼=200

[英]I get strange response in Retrofit with protocol=http/1.1, code=200

當我使用 Retrofit 調用 Login API 時,我遇到了一個小問題:響應體為 null。 響應消息包含此消息:

“響應{protocol=http/1.1, code=200, message=OK, 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;
    }

}

在您的loginConnector方法中,您可以使用call.request().url()來顯示/調試您正在調用的請求 URL。

此外,您可以使用 REST 客戶端向該 URL 發出 POST 請求並檢查兩個響應之間的差異。 如今,失眠 REST 客戶端是一個不錯的選擇。

我希望這可以幫助你。

在你的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();
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM