Не удается загрузить данные на мой сервер Parse через мой проект Android Studio

У меня проблемы с использованием моего сервера Parse, созданного с помощью Amazon Web Service.

Я пытаюсь добавить пользователя через ParseUser в свою MainActivity с помощью метода Button onClick, но по какой-то причине это не работает... Ошибка: Error: com.parse.ParseRequest$ParseRequestException: сбой ввода-вывода< /эм>

Кстати, вчера все работало хорошо, но это было в Android Studio версии 2.2.1. Но сегодня хочу попробовать на обновленной версии 3.4.1. Мне пришлось изменить некоторые строки в файлах Gradle, но ничего в другом месте, поэтому я не знаю, актуально ли это.

Я также не знаю, какая информация вам нужна, чтобы помочь мне, поэтому я приведу все, что может подразумеваться... Извините за очень длинное сообщение.

Мой класс MainActivity:

public class MainActivity extends AppCompatActivity {



    public void signUpClick(View view) {

        EditText usernameEditText = (EditText) findViewById(R.id.usernameEditText);
        EditText passwordEditText = (EditText) findViewById(R.id.passwordEditText);

        if (passwordEditText.getText().toString().equals("") || usernameEditText.getText().toString().equals("")) {

            Toast.makeText(this, "As username and password are required", Toast.LENGTH_SHORT).show();

        } else {

            ParseUser user = new ParseUser();

            user.setUsername(usernameEditText.getText().toString());
            user.setPassword(passwordEditText.getText().toString());
            user.signUpInBackground(new SignUpCallback() {
                @Override
                public void done(ParseException e) {

                    if (e == null) {

                        Log.i("test", "Success");

                    } else {

                        Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                        Log.i("test", "Fail. Error : " + e.toString());
                        e.printStackTrace();

                    }

                }
            });

        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        ParseAnalytics.trackAppOpenedInBackground(getIntent());

    }

} 

Скриншот моего сеанса PuTTY, где я прочитал информацию о своем сервере в config.json:

[скриншот][1]

Мой класс StarterApplication, в котором я определяю информацию о своем сервере:

public class StarterApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // Enable Local Datastore.
        Parse.enableLocalDatastore(this);

        // Add your initialization code here
        Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
                .applicationId("myappID")
                .clientKey("eXK4EAJ8lO7I")
                .server("http://18.191.227.26/parse/")
                .build()
        );


        //ParseUser.enableAutomaticUser();

        ParseACL defaultACL = new ParseACL();
        defaultACL.setPublicReadAccess(true);
        defaultACL.setPublicWriteAccess(true);
        ParseACL.setDefaultACL(defaultACL, true);

    }
}

Спасибо за ваше время, пожалуйста, сообщите мне, если вам нужна другая информация.


person Aydin Abiar    schedule 12.04.2020    source источник


Ответы (1)


com.parse.ParseRequest$ParseRequestException: i/o failure

Это означает, что у вас проблемы с подключением. Возможно, ваш сервер синтаксического анализа не работает или ваш телефон не имеет доступа к Интернету.

Если вы уверены, что у вас есть подключение к Интернету и работающий сервер синтаксического анализа, то, вероятно, ваш сервер не имеет сертификата SSL (что означает, что вы используете http вместо https. См.: .server("http://18.191.227.26/parse/"))

После Android 9 (включая 9) Android запрещает подключение к небезопасным адресам (например, http-соединения).

Добавьте эту строку между тегом вашего приложения в файле AndroidManifest.

android:usesCleartextTraffic="true"

Вы можете использовать это на этапе разработки, но я рекомендую вам переключиться на https.

person UzaySan    schedule 13.04.2020
comment
Оно работает ! :) Я действительно не знаю, как перейти на https. Вот как был создан URL-адрес моего сервера синтаксического анализа, но я собираюсь больше искать по этому вопросу, чтобы избежать каких-либо обязательств. Спасибо за помощь ! - person Aydin Abiar; 14.04.2020
comment
@AydinAbiar Вы можете использовать Let's Encyrpt. Дают бесплатный сертификат. Есть много руководств по его установке. - person UzaySan; 15.04.2020