Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Can';t通过Android Studio项目将数据上传到解析服务器_Amazon Web Services_Parse Platform_Parse Server_Parse Android Sdk - Fatal编程技术网

Amazon web services Can';t通过Android Studio项目将数据上传到解析服务器

Amazon web services Can';t通过Android Studio项目将数据上传到解析服务器,amazon-web-services,parse-platform,parse-server,parse-android-sdk,Amazon Web Services,Parse Platform,Parse Server,Parse Android Sdk,我在使用使用AmazonWeb服务创建的解析服务器时遇到问题 我尝试通过按钮onClick方法在我的MainActivity中通过ParseUser添加用户,但由于某些原因它不起作用。。。 错误是: 错误:com.parse.ParseRequest$ParseRequestException:i/o失败 顺便说一句,昨天一切都很好,但在Android Studio 2.2.1版中。但是今天我想在更新的版本3.4.1上试用它。我不得不修改Gradle文件中的一些行,但其他地方没有修改,所以我不知

我在使用使用AmazonWeb服务创建的解析服务器时遇到问题

我尝试通过按钮onClick方法在我的MainActivity中通过ParseUser添加用户,但由于某些原因它不起作用。。。 错误是: 错误:com.parse.ParseRequest$ParseRequestException:i/o失败

顺便说一句,昨天一切都很好,但在Android Studio 2.2.1版中。但是今天我想在更新的版本3.4.1上试用它。我不得不修改Gradle文件中的一些行,但其他地方没有修改,所以我不知道是否相关

我也不知道你需要什么信息来帮助我,所以我会把所有可能暗示的东西。。。 对不起,我的留言太长了

我的主要活动类:

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

    }

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

    }
}
我在config.json中读取服务器信息的PuTTY会话的屏幕截图:

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

    }

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

    }
}
[截图][1]

我定义服务器信息的应用程序类:

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

    }

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

    }
}
谢谢您的时间,如果您需要其他信息,请告诉我

com.parse.ParseRequest$ParseRequestException: i/o failure
这意味着您的连接有问题。您的解析服务器可能已关闭,或者您的手机无法访问internet

如果您确定您有internet连接和工作的解析服务器,那么您的服务器可能没有SSL证书(这意味着您使用的是http而不是https。请参阅:
.server(“http://18.191.227.26/parse/)

在Android 9(包括9)之后,Android阻止连接到不安全的地址。(即http连接)

在AndroidManifiest文件中的应用程序标记之间添加此行

android:usesCleartextTraffic="true"
您可以在开发阶段使用此选项,但我建议您切换到https

这意味着您的连接有问题。您的解析服务器可能已关闭,或者您的手机无法访问internet

如果您确定您有internet连接和工作的解析服务器,那么您的服务器可能没有SSL证书(这意味着您使用的是http而不是https。请参阅:
.server(“http://18.191.227.26/parse/)

在Android 9(包括9)之后,Android阻止连接到不安全的地址。(即http连接)

在AndroidManifiest文件中的应用程序标记之间添加此行

android:usesCleartextTraffic="true"

您可以在开发阶段使用此选项,但我建议您切换到https。

它可以工作!:)我真的不知道如何切换到https。这就是我的解析服务器的url是如何创建的,但我将在这个主题上搜索更多内容,以避免任何责任。谢谢你的帮助@AydinAbiar你可以用我们的百科全书。他们提供免费的证书。有很多关于如何安装它的教程。它很有效!:)我真的不知道如何切换到https。这就是我的解析服务器的url是如何创建的,但我将在这个主题上搜索更多内容,以避免任何责任。谢谢你的帮助@AydinAbiar你可以用我们的百科全书。他们提供免费的证书。有很多关于如何安装它的教程。