2016-01-06 2 views
1

EDIT: 20020-20020/practise.mysql_php_json I/System.out: org.json.JSONException: Значение уш типа java.lang.String не может быть преобразован в JSONObjectww является сообщение в терминале, которое я получаю.Не получая ответ JSON с Android App

Я работаю над тем, чтобы получить простую вставку и получить приложение для работы в android, выполнив руководство по youtube. Должно быть довольно просто, и я могу опубликовать информацию о пользователе в онлайн-базе данных, но когда я иду, чтобы получить ее, ничего не происходит. Не получить никаких ошибок, просто не получив ответа в JSON.

Я только начинаю работать с JSON и php обоими, так что я не знаю, не хочу ли я чего-то или чего-то не хватает.

Вот мой connection.php, который я знаю, мои учетные данные верны, потому что я могу вставить.

<?php 

    define('hostname', '--------'); 
    define('user', '---------'); 
    define('password', '-------'); 
    define('database', '------------------'); 

    $connect = mysqli_connect(hostname, user, password, database); 

?> 

Вот мой insertUser.php

<?php 

if($_SERVER["REQUEST_METHOD"]=="POST") { 
    require 'connection.php'; 
    createUser(); 
} 

function createUser() { 
    global $connect; 

    $name = $_POST["name"]; 
    $email = $_POST["email"]; 
    $password = $_POST["password"]; 

    $query = " Insert into user_table(user_name, user_email, user_password) values ('$name','$email','$password');"; 

    mysqli_query($connect, $query) or die (mysqli_error($connect)); 
    mysqli_close($connect); 
} 

?> 

Вот мой showUsers.php

<?php 

if($_SERVER["REQUEST_METHOD"]=="GET"){ 
    include 'connection.php'; 
    showStudent(); 
} 
function showStudent() 
{ 
    global $connect; 

    $query = " Select * FROM users; "; 

    $result = mysqli_query($connect, $query); 
    $number_of_rows = mysqli_num_rows($result); 

    $temp_array = array(); 

    if($number_of_rows > 0) { 
     while ($row = mysqli_fetch_assoc($result)) { 
      $temp_array[] = $row; 
     } 
    } 

    header('Content-Type: application/json'); 
    echo json_encode(array("users"=>$temp_array)); 
    mysqli_close($connect); 

} 

?> 

Теперь вот мой Android код приложения в Основная деятельность. Предполагается, что вы просто получите имя, адрес электронной почты и пароль пользователей в моей базе данных. У меня есть другой метод onclick для вставки пользователей.

showButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     JsonObjectRequest jsonObjectRequest; = new JsonObjectRequest(Request.Method.GET, showURL, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        JSONArray users = response.getJSONArray("users"); 
        for(int i=0; i<users.length(); i++) { 
         JSONObject user = users.getJSONObject(i); 
         String name = user.getString("user_name"); 
         String email = user.getString("user_email"); 
         String password = user.getString("user_password"); 

         results.append(name); 
        } 

        results.append("\n"); 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 

     requestQueue.add(jsonObjectRequest); 
    } 
}); 
+0

Что вы получаете при вызове showUsers.php в своем браузере? любые ошибки? – Jeff

+0

Попробуйте установить тип контента: http://stackoverflow.com/questions/4064444/returning-json-from-a-php-script –

+0

Джефф, не получив никаких ошибок. На экране ничего не отображается. Хотя я только что заметил в журнале cat, я получаю 20020-20020/practise.mysql_php_json I/System.out: org.json.JSONException: Значение
ZWis212

ответ

0

Вы получаете ошибки в своем скрипте php. Первый шаг, чтобы включить отчеты об ошибках, поэтому поставить ниже код прямо под отверстием <?php метки:

ini_set('display_errors', 1); 
error_reporting(-1); 

Это покажет вам ошибку. Теперь, читая комментарии, вы, кажется, проваливаете запрос.

Вы должны проверить запрос, чтобы убедиться, что он действительно успешный, прежде чем вы попытаетесь получить результаты как таковые.

$query = " Select * FROM users; "; 

$result = mysqli_query($connect, $query); 
// this checks if query failed and prints error. 
if(!$result){ 
    die("SQL Error: ". mysqli_error($connect)); 
} 
// will only get here if your query runs successfully. 
$number_of_rows = mysqli_num_rows($result); 
///... rest of your code... 

Теперь сообщите нам, какие ошибки вы получили, и если вам удалось их исправить. Я отвечу на этот ответ, когда вы ответите.

0

Я бы скорее сказал, что, вероятно, ваш запрос ошибочен. Странно то, что вы вставляете пользователей в user_table, а затем как-то вы выбираете от users. Так что, если бы вы действительно хотели отображать пользователей, вы не должны выбирать, по крайней мере, одну и ту же таблицу? В любом случае вы можете изменить код, как:

insertUser.php

<?php 
error_reporting(E_ALL); 
try{ 
    $handler = new PDO('mysql:host=localhost;dbname=database', 'username', 'password'); 
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
}catch(Exception $e){ 
    echo $e->getMessage(); 
    die(); 
} 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$password = $_POST["password"]; 
$query = $handler->query("INSERT INTO user_table(user_name, user_email, user_password) VALUES('$name','$email','$password')"); 

?> 

Удалите Mysqli соединение и использовать PDO вместо также предложено самим PHP.

showUsers.PHP

<?php 
error_reporting(E_ALL); 
try{ 
    $handler = new PDO('mysql:host=localhost;dbname=database', 'username', 'password'); 
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
}catch(Exception $e){ 
    echo $e->getMessage(); 
    die(); 
} 

$query = $handler->query("SELECT * FROM user_table"); 
$json = array(); 
$json = $query->fetchAll(PDO::FETCH_ASSOC); 
$records['users'] = $json; 
echo json_encode($records); 
?> 

Ваш результат будет массив JSON называется пользователей, а затем вы можете получить данные из JAVA.

Надеюсь, что это поможет !!!

Смежные вопросы