无法通过我的 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导入现有单元测试“无法找到仪器信息”