Я пытаюсь отправить объект JSON из веб-службы PHP в мое приложение для Android. Первоначально для проверки, возвращает ли мой PHP-файл значение JSON, я набрал URL в браузере и получил правильное значение по желанию. Чтобы проверить мой код Android, я выполнил код, используя правильный URL-адрес хоста, но получил только «[]» в качестве вывода в logcat. В целях отладки я создал бесплатный веб-хостинг и базу данных на hosthinger.com. На этот раз точно такой же код PHP и Android работал нормально, давая мне желаемый результат. Список вещей, которые мы сделали, чтобы убедиться, что нет ошибок:
Есть ли конкретная конфигурация PHP для объектов JSON? Или я пропускаю какую-либо информацию заголовка? Я не понимаю, почему код работает отлично на одном хостинге, а не на другом.
Вот мой PHP-код:
<?php
include ('mysqlconnection.php');
$mobile = $_POST['mobile_number'];
$output = array();
$query="select name,status from content;";
$sql = mysql_query($query);
while($row = mysql_fetch_assoc($sql)) {
$output[]= array( 'imagename' => $row['name'], 'status' => $row['status'] );
}
echo json_encode($output);
?>
Может быть, вам нужно указать content.type в вашем php:
header('Content-Type: application/json');
Вы должны использовать выходной буфер с application/json
заголовок, а не просто повторяя json_encode()
выход.
Некоторые серверы склонны выдавать ошибки при работе с MySQL, проверьте настройки. И не использовать mysql_*
функции, использование PDO или по крайней мере MySQLi вместо.
Вы должны проверить возможные ошибки в вашем коде, проверить ваше соединение, результаты запроса и т. Д. Затем вы можете сгенерировать JSON для вывода.
Убедитесь, что ваш сервер error_reporting
установлен в 0
, Иногда серверы распечатывают предупреждения, уведомления и сообщения об ошибках, которые портят ваш вывод.
Вы можете использовать расширение Google Chrome PostMan для просмотра результатов вашего веб-сервиса. Он также показывает вывод как проанализированный json.