无法通过我的 Android Studio 项目将数据上传到我的 Parse Server
Can't upload data to my Parse Server throught my Android Studio project
我在使用使用 Amazon Web Service 创建的 Parse Server 时遇到问题。
我尝试在我的 MainActivity 中使用 Button onClick 方法通过 ParseUser 添加用户,但由于某种原因它不起作用...
错误是:
错误:com.parse.ParseRequest$ParseRequestException:i/o失败
顺便说一句,昨天一切正常,但它是在 Android Studio 版本 2.2.1 中。但是今天我想在更新后的3.4.1版本上试试看。我不得不修改 Gradle 文件中的一些行,但在其他地方没有修改,所以我不知道它是否相关。
我也不知道你需要什么信息来帮助我,所以我会把所有可能暗示的东西...
很抱歉很长的消息
我的 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());
}
}
我在 config.json 中读取服务器信息的 PuTTY 会话的屏幕截图:
[截图][1]
My StarterApplication class 我在其中定义我的服务器信息:
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
这意味着您的连接有问题。您的解析服务器可能已关闭或您的 phone 无法访问互联网。
如果您确定您有互联网连接和工作解析服务器,那么您的服务器可能没有 SSL 证书(这意味着您使用的是 http 而不是 https。请参阅:.server("http://18.191.227.26/parse/")
)
在Android9(包括9)之后Android防止连接到不安全的地址。(即http连接)
在您的 AndroidManifiest 文件
中的应用程序标记之间添加这一行
android:usesCleartextTraffic="true"
您可以在开发阶段使用它,但我建议您切换到 https。
我在使用使用 Amazon Web Service 创建的 Parse Server 时遇到问题。
我尝试在我的 MainActivity 中使用 Button onClick 方法通过 ParseUser 添加用户,但由于某种原因它不起作用... 错误是: 错误:com.parse.ParseRequest$ParseRequestException:i/o失败
顺便说一句,昨天一切正常,但它是在 Android Studio 版本 2.2.1 中。但是今天我想在更新后的3.4.1版本上试试看。我不得不修改 Gradle 文件中的一些行,但在其他地方没有修改,所以我不知道它是否相关。
我也不知道你需要什么信息来帮助我,所以我会把所有可能暗示的东西... 很抱歉很长的消息
我的 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());
}
}
我在 config.json 中读取服务器信息的 PuTTY 会话的屏幕截图:
[截图][1]
My StarterApplication class 我在其中定义我的服务器信息:
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
这意味着您的连接有问题。您的解析服务器可能已关闭或您的 phone 无法访问互联网。
如果您确定您有互联网连接和工作解析服务器,那么您的服务器可能没有 SSL 证书(这意味着您使用的是 http 而不是 https。请参阅:.server("http://18.191.227.26/parse/")
)
在Android9(包括9)之后Android防止连接到不安全的地址。(即http连接)
在您的 AndroidManifiest 文件
中的应用程序标记之间添加这一行android:usesCleartextTraffic="true"
您可以在开发阶段使用它,但我建议您切换到 https。