我正在做一个Android登录功能。最初,它是使用localhost制作的,但是由于要建立外部连接,因此可以使用免费托管重新创建。
我通过FTP上传php,并将以前为localhost的url更改为免费的托管url。
final static private String URL = "http://10.0.2.2:80/login.php";
至
final static private String URL = "http://stock123.dothome.co.kr/login.php";
使用本地主机时,它作为AVD运行,而使用免费主机URL时,它作为Android设备运行。
使用本地主机时,执行登录没有任何问题,但是更改url后,下面会出现错误。
org.json.JSONException:类型为java.lang.String的Value DB无法转换为JSONObject
我不知道问题出在哪里。
这是login.php
<?php
$con = mysqli_connect('mirpasec.ddns.net:50106', 'extern_user', 'extern_pass', 'extern_user');
if (!$con)
{
echo "MySQL 접속 에러 : ";
echo mysqli_connect_error();
exit();
} else {
echo "DB connect success";
}
$userID = $_POST["userID"];
$userPassword = $_POST["userPassword"];
$statement = mysqli_prepare($con, "SELECT * FROM USER WHERE userID = ? AND userPassword = ?");
mysqli_stmt_bind_param($statement, "ss", $userID, $userPassword);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $userPassword, $userEmail, $userName, $userPhone);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["userID"] = $userID;
$response["userPassword"] = $userPassword;
$response["userEmail"] = $userEmail;
$response["userName"] = $userName;
$response["userPhone"] = $userPhone;
}
echo json_encode($response);
?>
我认为json代码没有问题,因为它在使用本地主机时可以正常工作。连接到数据库似乎有问题。使用FTP时我还需要添加其他内容吗?
最佳答案
类型为java.lang.String的Value DB无法转换为JSONObject
我认为问题是您没有获得JSONObject
,因为您不知道到达后端api的原因。
请检查您的AndroidManifest.xml
文件是否具有必要的权限。您需要添加以下权限,才能授予您的应用程序使用Internet的权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />