我正在做一个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" />

09-16 04:44