【问题标题】:Can't upload data to my Parse Server throught my Android Studio project无法通过我的 Android Studio 项目将数据上传到我的 Parse Server
【发布时间】:2023-03-22 11:25:01
【问题描述】:

我在使用使用 Amazon Web Service 创建的 Parse Server 时遇到问题。

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

顺便说一句,昨天一切正常,但它是在 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());

    }

} 

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

[截图][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);

    }
}

感谢您的宝贵时间,如果您需要其他信息,请告诉我。

【问题讨论】:

    标签: amazon-web-services parse-platform parse-server parse-android-sdk


    【解决方案1】:
    com.parse.ParseRequest$ParseRequestException: i/o failure
    

    这意味着您的连接存在问题。您的解析服务器可能已关闭或您的手机无法访问互联网。

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

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

    在您的 AndroidManifiest 文件中的应用程序标签之间添加这一行

    android:usesCleartextTraffic="true"
    

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

    【讨论】:

    • 有效! :) 我真的不知道如何切换到 https。这就是我的解析服务器 url 的创建方式,但我将在该主题上进行更多搜索以避免任何责任。感谢您的帮助!
    • @AydinAbiar 您可以使用 Let's Encyrpt。他们提供免费证书。有很多关于如何安装它的教程。
    猜你喜欢
    • 1970-01-01
    • 2017-11-25
    • 2018-01-15
    • 2021-08-13
    • 2023-03-18
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多