Так что мой login.php скрипт работает очень хорошо при отправке запроса в виде необработанного JSON в Postman, но отправка его в Android возвращает пустой ответ, и когда я пытаюсь привести его к UserResponse в update () метод Я получаю «Попытка вызвать виртуальный метод» java.lang.String com.alenpersic.hrvend.Entities.UserResponse.getMessage () «при пустой ссылке на объект». postman_request
Это внутри моего MainActivity.java
@Override
public void update(Observable o, Object arg){
UserResponse response = (UserResponse) arg;
Toast.makeText(this, response.getMessage(), Toast.LENGTH_SHORT).show();
if (response.getMessage().equals("Login successful.")){
Toast.makeText(this, "Prijava uspješna!", Toast.LENGTH_SHORT).show();
showMachineList();
}
else {
Toast.makeText(this, "Pogrešno korisničko ime i lozinka!", Toast.LENGTH_SHORT).show();
}
DataObservable.getInstance().deleteObserver(this);
showMachineList();
}
public void SignUp (View view){
User currentUser = new User(usernameEditText.getText().toString(), passwordEditText.getText().toString());
DataObservable.getInstance().addObserver(this);
LoginLoader controller = new LoginLoader();
controller.loadUser(controller.create(), currentUser);
}
WebServiceInterface.java
public interface WebServiceInterface {
@GET("machine/read.php")
Call<MachineResponse> getMachines();
@GET("machine/read_materials.php")
Call<RawMaterialsResponse> getRawMaterials(
@Query("id") String id
);
@Headers({"Content-Type: application/json"})
@POST("login.php")
Call<LoginResponse> sendUser(
@Body User user
);
LoginLoader.java
public class LoginLoader extends DataLoader {
public void loadUser(WebServiceInterface webserviceInterface, User user)
{
Call<LoginResponse> call = webserviceInterface.sendUser(user);
call.enqueue(this);
}
@Override
public void onResponse(Call call, retrofit2.Response response)
{
if(response.isSuccessful())
{
LoginResponse loginResponse = (LoginResponse) response.body();
UserResponse data = loginResponse.getData();
DataObservable.getInstance().notifyObserverWithResponse(data);
}
else
{
Log.d("MainActivity", response.errorBody().toString() + " " + response.message() + " " + response.raw());
}
}
LoginResponse.java
public class LoginResponse extends DataResponse {
UserResponse data;
public UserResponse getData(){
return data;
}
public void setData(UserResponse data){
this.data = data;
}
User.java
public class User {
@SerializedName("username")
@Expose
private String username;
@SerializedName("password")
@Expose
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setMessage(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}