NullPointerException при ответе с использованием модернизации - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть вопрос.Почему у меня 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)

MainActivity:

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;

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

1 Ответ

0 голосов
/ 17 ноября 2018

Мне кажется, проблема в том, что ваша ссылка выглядит следующим образом:

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...