NullPointerException при ответе с использованием модернизации

1

У меня есть вопрос. Почему у меня есть NullPointerException при получении данных из ResponseModel.

Ошибка:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Integer bjd.adrian.retrofitjavapost.ResponseModel.getStatusOfLogin()' on a null object reference
    at bjd.adrian.retrofitjavapost.MainActivity$1.onResponse(MainActivity.java:51)

Основная деятельность:

private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void onClick(View view)
{
    EditText usernameET = findViewById(R.id.usernameET);
    EditText passwordET = findViewById(R.id.passwordET);

    String username = usernameET.getText().toString();
    String password = passwordET.getText().toString();

    final RequestModel requestModel = new RequestModel();

    requestModel.setUsername(username);
    requestModel.setPassword(password);

    final Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://192.168.100.9/androidAppScripts/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    WebAPIInterface webAPIInterface = retrofit.create(WebAPIInterface.class);

    webAPIInterface.login(requestModel).enqueue(new Callback<ResponseModel>() {
        @Override
        public void onResponse(Call<ResponseModel> call, Response<ResponseModel> response) {
            ResponseModel responseModel = response.body();



            Log.v(TAG, "StatusOfLogin = "+responseModel.getStatusOfLogin()+"    ID = "+responseModel.getId());
        }

        @Override
        public void onFailure(Call<ResponseModel> call, Throwable t) {
            Log.e(TAG, t.toString());
        }
    });
}

RequestModel:

public class RequestModel
{
    @SerializedName("username")
    private String username;

    @SerializedName("password")
    private String password;

    //getters and setters
}

ResponseModel:

@SerializedName("statusOfLogin")
@Expose
private Integer statusOfLogin;
@SerializedName("id")
@Expose
private Integer id;

Я учусь, как использовать модернизацию. Пожалуйста, помогите мне !

Теги:
retrofit2

1 ответ

0
Лучший ответ

Я думаю, проблема в том, что ваша ссылка выглядит так:

http://192.168.100.9/androidAppScripts//retrofitLogin.php.

Это приводит к объединению .baseUrl("http://192.168.100.9/androidAppScripts/") и @POST("/retrofitLogin.php").

Вы должны удалить / in .baseUrl("http://192.168.100.9/androidAppScripts/") или @POST("/retrofitLogin.php").

Я предлагаю вам создать константу BASE_URL и хранить там http://192.168.100.9/androidAppScripts и после этого использовать .baseUrl(BASE_URL).

  • 0
    Я удаляю / из WebAPIInterface. Работает ! Но у меня есть следующая ошибка E/MainActivity: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $
  • 0
    Как это починить? Я думал добавить код из сценария php. Может быть, в PHP скрипт не так
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню