Итак, я попробовал запрос в Почтальоне, и он отлично работает.Но когда я делаю это в Android, response.body () пусто.Запрос отправляет электронное письмо и пароль для входа в систему и должен вернуть объект пользователя с другими данными.
loginUser.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
loginView.onLoginResult(response.body());
} else {
loginView.showLoginErrorResult();
}
}
Вот мой интерфейс Retrofit:
public interface NetworkAPI {
@POST("/login")
Call<User> login(@Body UserLogin userLogin);
}
RetrofitClient:
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getAPI(String BASE_URL) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(logging).build();
if (retrofit == null) {
retrofit = new Retrofit
.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
Мой класс пользователя:
public class User {
@SerializedName("id")
@Expose
private String id;
@SerializedName("token")
@Expose
private String token;
@SerializedName("email")
@Expose
private String email;
@SerializedName("firstName")
@Expose
private String firstName;
@SerializedName("lastName")
@Expose
private String lastName;
public User(String id, String token, String email, String firstName, String lastName) {
this.id = id;
this.token = token;
this.email = email;
this.firstName = firstName;
this.lastName = lastName;
}
//getters &setters...
}
Запрос почтальона:
{
"email":"test@email.com",
"password":"123456"
}
Ответ почтальона:
{
"success": true,
"payload": {
"email": "test@email.com",
"firstName": "test",
"lastName": "test",
}
}
Также я 'm получает ответ 200, но нет данных о теле