Сохранение пользователя с помощью Retrofit - PullRequest
0 голосов
/ 25 апреля 2020

Для школьного проекта мне нужно реализовать приложение чата с rest-api. До сих пор я сделал два просмотра с переключением на экран регистрации, где пользователь должен предоставить свои учетные данные и зарегистрироваться, но пока не повезло. Я не знаю почему, но он напрямую переходит к методу onFailure из нового Callback. Я новичок в модернизации и android может быть, это то, что я пропускаю. Я был бы признателен, если бы кто-то мог взглянуть.

registerActivity:

public void registerData(){
        String userName = userNameField.getText().toString();
        String password = passwordField.getText().toString().trim();

        if(TextUtils.isEmpty((userName))){
            Toast.makeText(this,"Please enter username", Toast.LENGTH_SHORT).show();
                return;
        }
        if(TextUtils.isEmpty(password)){
            Toast.makeText(this,"Please enter password", Toast.LENGTH_SHORT).show();
                return;
        }
        //If validation is ok
        Call<serverResponse> call = backendServiceClient.getInstance()
                                    .getService()
                                    .registerUser(userName,password);
    call.enqueue(new Callback<serverResponse>() {
        @Override
        public void onResponse(Call<serverResponse> call, Response<serverResponse> response) {

                String s = response.body().toString();
                Toast.makeText(registerActivity.this, s, Toast.LENGTH_LONG).show();
        }
        @Override
        public void onFailure(Call<serverResponse> call, Throwable t) {
            Toast.makeText(registerActivity.this, "Fehlgeschlagen", Toast.LENGTH_LONG).show();

        }
    });
    }

Клиент, в котором я определяю base_url

private static final String BASE_URL = "http://palaver.se.paluno.uni-due.de";
    private Retrofit retroInstance;
    private static backendServiceClient servicesInstances;

    private backendServiceClient(){
        retroInstance = new Retrofit.Builder()
                                    .baseUrl(BASE_URL)
                                    .addConverterFactory(GsonConverterFactory.create())
                                    .build();

    }

            public static synchronized backendServiceClient getInstance(){
                        if(servicesInstances == null){
                            servicesInstances = new backendServiceClient();

                        }
                        return servicesInstances;
            }

                public backendServices getService(){
                        return retroInstance.create(backendServices.class);
                }

класс, где у меня есть мой пост Запрос

@FormUrlEncoded
    @POST("/api/user/register")
    Call<serverResponse> registerUser(@Field("Username") String username,
                                      @Field("Password") String password);

}

И, наконец, поскольку я знал, какой тип отката я могу получить, я добавил к нему класс

@SerializedName("MsgType")
    @Expose
    private Integer messageType;

    @SerializedName("Info")
    @Expose
    private String info;

    @SerializedName("Data")
    @Expose
    private Object data;

    public Integer getMessageType() {
        return messageType;
    }


    public String getInfo() {
        return info;
    }


    public Object getData() {
        return data;
    }

Это структура, с которой сервер отвечает мне:

{"MsgType":1,"Info":"Benutzer
erfolgreich angelegt", "Data":null}

Я знаю, что это много, но, поскольку я новичок, я не знаю, где ошибка, и что действительно требуется, а что нет. Я очень расстроен, сейчас я сижу часами ...

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