1

I have trouble using my Parse Server that I created using Amazon Web Service.

I try to add a user through ParseUser in my MainActivity with a Button onClick method but it doesn't work for some reason... The error is : Error : com.parse.ParseRequest$ParseRequestException: i/o failure

It all worked well yesterday btw, but it was in Android Studio version 2.2.1. But today I want to try it on the updated version 3.4.1. I had to modify some lines in the Gradle files but nothing elsewhere so I don't know if it's relevant.

I don't know either what info you need to help me so I'm gonna put everything that might be implied... Sorry for the very long message

My MainActivity class:

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());

    }

} 

A screenshot of my PuTTY session where I read the info of my server in the config.json :

[screenshot][1]

My StarterApplication class where I define my server information:

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);

    }
}

Thank you for your time, please tell me if you need other info.

Manuel
  • 14,274
  • 6
  • 57
  • 130
Aydin Abiar
  • 334
  • 3
  • 11

1 Answers1

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

This means there is a problem with your connection. Your parse server may be down or your phone doesn't have internet access.

If you are sure you have an internet connection and a working parse server, then its probably your server doesnt have SSL sertificate(which means you are using http instead of https. See: .server("http://18.191.227.26/parse/"))

After Android 9(including 9) Android prevents connection to unsafe adresses.(ie http connections)

Add this line between your application tag in your AndroidManifiest file

android:usesCleartextTraffic="true"

You can use this while development phase but I recommend you to switch to https.

uzaysan
  • 583
  • 1
  • 4
  • 18
  • It works ! :) I don't really know how to switch to https. That's how my parse server's url was created but I'm going to search more on the subject to avoid any liabilities. Thank you for your help ! – Aydin Abiar Apr 14 '20 at 11:41
  • @AydinAbiar You can use Let's Encyrpt. They provide free sertificate. There are plenty of tutorials of how to install it. – uzaysan Apr 15 '20 at 09:06