无法通过我的 Android Studio 项目将数据上传到我的 Parse Server

Posted

技术标签:

【中文标题】无法通过我的 Android Studio 项目将数据上传到我的 Parse Server【英文标题】:Can't upload data to my Parse Server throught my Android Studio project 【发布时间】:2020-04-12 21:31:45 【问题描述】:

我在使用使用 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);

    

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

【问题讨论】:

【参考方案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。他们提供免费证书。有很多关于如何安装它的教程。

以上是关于无法通过我的 Android Studio 项目将数据上传到我的 Parse Server的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 无法识别 Facebook 库

无法在 Android Studio 2.0 中解析符号 R [重复]

将 jar 文件导入 Android Studio 但仍然无法解析我的课程?

Android Studio导入现有单元测试“无法找到仪器信息”

升级后无法在android studio上打开flutter项目

无法在 Android Studio 4.0 中创建 Dart 项目