java - 我在 Retrofit 中得到奇怪的响应,协议(protocol)=http/1.1,代码=200

标签 java android retrofit retrofit2

当我使用Retrofit 调用Login API 时,遇到一个小问题:响应体为空。并且响应消息包含此消息:

“响应{protocol=http/1.1, code=200, message=OK, url= http://gagron.com/api/login.php }”

class interface

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

Login Method

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() + "");

        }
    });
}

最后是考虑响应的用户模型。

Class 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 请求,并检查两个响应之间的差异。如今Insomnia REST client是一个不错的选择。

希望对您有所帮助。

关于java - 我在 Retrofit 中得到奇怪的响应,协议(protocol)=http/1.1,代码=200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52494845/

相关文章:

java - 使用 JSON 对象响应 AJAX 请求?

java - 如何对类对象列表的某个字段进行排序?

java - android reSTLet 添加非标准头参数

php - 使用 Android 应用程序使用 URL 在服务器上保存图像 ERROR 输入错误结束在第 1 行第 1 列路径 $

java - 通过 OkHttp 拦截器拦截和重试调用

android - 改造中的动态路径

java - 如何设置 doInbackground 在继续 mainActivity 之前完成其任务?

java - 上下文在 Fragment .onStart() 方法中不可用

java - 获取拨号器 Intent 的 RESULT_CANCELED

java - android中是否有模型更改监听器机制