org.json.JSONException:类型为java.lang.String的Value DB无法转换为JSONObject

时间:2019-06-15 15:57:04

标签: php mysql json

我正在使用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的值数据库无法转换为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时我还需要添加其他内容吗?

1 个答案:

答案 0 :(得分:0)

  

类型为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" />