我在 protocol=http/1.1,code=200 的改造中得到了奇怪的响应



当我使用Retrofit调用Login API时,我遇到了一个小问题:响应正文为空。响应消息包含以下消息:

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

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

类用户模型

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

最新更新