点击Tambah data/add data闪退,遇403错误及NetworkUtility异常求助
问题排查与解决方案
核心错误分析
NetworkUtility.shouldRetryException: Unexpected response code 403 表示服务器理解请求但拒绝执行,并非单纯的IP/URL配置错误,结合你提供的代码,从以下几个维度排查:
一、修复koneksi.php的致命问题
你提供的koneksi.php是空HTML文件,完全没有MySQL连接逻辑,这会导致服务器返回异常(甚至触发403),同时所有依赖它的接口都会失效。替换为标准的数据库连接代码:
<?php // 数据库基础配置 $host = 'localhost'; // 本地数据库用localhost,远程服务器填对应IP $db_user = '你的数据库用户名'; $db_pass = '你的数据库密码'; $db_name = '你的目标数据库名'; // 创建数据库连接 $conn = mysqli_connect($host, $db_user, $db_pass, $db_name); // 校验连接状态 if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } // 设置字符编码避免乱码 mysqli_set_charset($conn, "utf8"); ?>
注意:删除原文件中所有HTML标签,仅保留PHP代码,否则接口返回HTML而非纯数据,会导致客户端解析崩溃。
二、排查403错误的常见诱因
- 文件/目录权限异常
- 检查服务器上
folder_kerja目录和koneksi.php文件的权限:目录设为755,文件设为644,确保Web服务器(Apache/Nginx)有读取权限。
- 检查服务器上
- 服务器安全规则限制
- 若用Apache,检查
.htaccess文件是否有禁止访问的规则;若用Nginx,查看配置文件中的allow/deny条目,确认允许客户端IP访问。
- 若用Apache,检查
- 请求方式不匹配
- 确认
EntriAlumniActivity中提交数据的请求方式(POST/GET)与后端接口一致,若后端仅接受POST,客户端用GET会触发权限拒绝。
- 确认
三、优化Kotlin代码中的潜在问题
- 修复IP扫描逻辑
onStart中循环发送256个请求会触发服务器频率限制,导致403,建议改为手动配置正确的服务器IP,而非自动扫描。- 全局变量
ip未声明,需在类中添加:private var ip = "10.0.2.2"
- 添加Volley错误监听
- 现有请求未处理错误回调,无法捕获崩溃细节,补充错误监听:
sr = StringRequest(Request.Method.GET, url, { /* 成功回调逻辑 */ }, { error -> Toast.makeText(this@MainActivity, "请求失败: ${error.message}", Toast.LENGTH_SHORT).show() } )
四、定位闪退的直接原因
点击按钮闪退的核心发生在EntriAlumniActivity中,需补充排查:
- 查看
EntriAlumniActivity的网络请求代码,确认是否调用了koneksi.php或其他接口,检查URL、请求参数是否正确。 - 在Logcat中提取完整的崩溃栈跟踪(不止403错误),NullPointerException或类型转换异常才是闪退的直接诱因。
内容的提问来源于stack exchange,提问作者Dwizahran
相关产品推荐
相关产品推荐

