2015-11-30 5 views
0

Итак, я работаю над приложением android, которое извлекает данные из базы данных MySQL на сервере xampp. Вот код из андроида магистрали,Сообщение об ошибке jsonObjectRequest равно

Button scanButton = (Button) findViewById(R.id.scanButton); 
String findUrl = "http://myIPaddress/webservice/findItem.php"; 
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
scanButton.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 

     JsonObjectRequest jsonObjectrequest = new JsonObjectRequest(Request.Method.POST, 
     findUrl, new Response.Listener<JSONObject>(){ 
      @Override 
      public void onResponse(JSONObject response){ 
       try{ 
        //retrieve the items table from the database 
        JSONArray items = response.getJSONArray("items"); 
        int i = 2; 
        //retrieve the 3rd row in the table 
        JSONObject item = items.getJSONObject(i); 
        String name = item.getString("name"); 
        //send a LogCat message containing the name of the row     
        Log.d("name",name); 
       } catch(JSONException e){ 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener(){ 
      @Override 
      public void onErrorResponse(VolleyError error){ 
       //in case of an error, send a logcat message containing the error 
       Log.d("error","" + error.getMessage()); 
      } 
     }); 
     requestQueue.add(jsonObjectrequest); 
    } 
}); 

} 

РНР скриптов находятся в папке WebService, которая находится в папке HTDOCS папки XAMPP. Вот сценарий для connection.php (объявляет и устанавливает соединение для базы данных),

<?php 

define('hostname', 'localhost'); 
define('user','root'); 
define('password',''); 
define('databaseName','webservice'); 

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

?> 

и сценарий для findItem.php (возвращает «элементы» таблицы из базы данных «WebService» в моем местном host phpmyadmin),

<?php 

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

function showItem(){ 
    global $connect; 

    $query = "Select * FROM ITEMS"; 

    $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("items"=>$temp_array)); 
    mysqli_close($connect); 
} 

?> 

Ошибка, с которой я сталкиваюсь, происходит во время выполнения. Когда я нажимаю кнопку в своем эмуляторе Android, сообщение logcat не является именем из третьей строки таблицы «items». Появляется сообщение об ошибке, но ошибка заканчивается нулевым. Мой вопрос в основном может быть причиной этого? Я убедился, что скрипты php находятся в правильном месте (xampp/htdocs/webservice), правильный IP-адрес, серверы xampp для apache и mysql включены, права доступа были записаны в файле манифеста Android и В базе данных под названием «webservice» существовала таблица «items» с не менее чем тремя строками. Любая обратная связь приветствуется, спасибо заранее.

ответ

1

Так что, хотя у меня не было ответов на этот вопрос, я смог выяснить, что случилось. Во-первых, я проверил, существует ли даже база данных с помощью приложения postman (расширение google chrome), поскольку я использовал методы post в сценариях php. База данных действительно существует. Поэтому проблема была, скорее всего, ip-адресом, несмотря на мое неправильное предположение в вопросе. Ip-адрес, который я первоначально имел в строке findUrl, был правильным, но все-таки неправильным. Это был действительный IP-адрес, но база данных находится на локально размещенном сервере; поэтому ip-адрес должен быть локальным IP-адресом. По какой-то причине ip-адрес, который я использовал, не был локальным, так что это было исправление. Если кто-то задавался вопросом, как я нашел локальный IP-адрес в Windows, просто запустите командную строку и введите «ipconfig». Локальный IP-адрес должен быть «ipv4 address».

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