android - 没有指定网络安全配置,使用平台默认的android登录设计
问题描述
这是我第一次提出问题,因为我真的遇到了一个大问题,我正在开发一个可以与远程服务器通信的android登录/注册页面,我遵循了一些教程,但即使我也无法得到理想的结果跟着很多教程,我希望有人可以帮助我,
这是我的代码,我首先在localhost中创建了一个mysql数据库,我编写了以下php代码来连接android应用程序和dababase:
<?php
$con = mysqli_connect("localhost", "myaccount", "mypassword", "mytest");
$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, username, age, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>
然后我创建了一个使用volley框架处理数据库的android应用程序,这是“注册”按钮的代码,当我填写信息并单击它时,我希望它可以发送数据tp mysql,
RegisterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String name = etName.getText().toString();
final String username = etUsername.getText().toString();
final int age = Integer.parseInt(etAge.getText().toString());
final String password = etPassword.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
RegisterActivity.this.startActivity(intent);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
builder.setMessage("Register Failed")
.setNegativeButton("Retry", null)
.create()
.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
RegisterRequest registerRequest = new RegisterRequest(name, username, age, password, responseListener);
RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
queue.add(registerRequest);
}
});
我还列出了RegisterRequest
功能代码如下:
public class RegisterRequest extends StringRequest {
private static final String REGISTER_REQUEST_URL = "http://my computer ipv4/Register11.php";
private Map<String, String> params;
public RegisterRequest(String name, String username, int age, String password, Response.Listener<String> listener) {
super(Method.POST, REGISTER_REQUEST_URL, listener, null);
params = new HashMap<>();
params.put("name", name);
params.put("age", age + "");
params.put("username", username);
params.put("password", password);
}
@Override
public Map<String, String> getParams() {
return params;
}
}
我个人认为我已经完成了所有需要的信息,但是当我测试我的andriod应用程序时,我无法将数据发送到数据库,我已经检查了一整天的代码仍然无法解决它,我在这里发布我的register
页面, <br>
注册页面, 完成信息后注册页面
当我单击“注册”按钮时,应用程序将发出警告
No Network Security Config specified, using platform default
我明白这不是错误,但我的应用程序在这里停止了,我的意思是,当我点击按钮时,应用程序没有响应,只显示上述警告,而且信息没有发送到数据库,我已经尝试解决搞了好久,还是报错,希望有人能帮帮我。我将不胜感激!
解决方案
从 Google 的网络安全配置文档中,您可以通过添加以下内容来解决此问题 -
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
...
<application
...
android:usesClearTextTraffic="true"
...>
...
</application>
</manifest>
到您的 AndroidManifest.xml 文件
有关更多信息,您可以在此处查看 Google 文档,以便网络安全配置 - “ https://developer.android.com/training/articles/security-config ”
推荐阅读
- javascript - 在 Angular 中创建允许组件覆盖多个部门的网格系统的想法
- python - google-cloud-storage get_bucket 非常慢
- javascript - 无法将 GeoJSON 从 PostGIS 加载到 Leaflet
- python - 如何在 Python 中输出拟合数据以在 Origin 中使用
- javascript - Google Scripts / Sheets 添加前缀国际电话
- python - py2app“/usr/lib/libstdc++.6.dylib:没有这样的文件或目录”错误
- python-3.x - 如何使用 matplotlib 从数据框中的类标签中添加图例?
- javascript - 更改 ReactPlayer 字幕
- flask - 在heroku上部署烧瓶应用程序的麻烦
- android - Android Kotlin:当应用程序处于打盹模式时获取位置