Сценарий PHP возвращает необработанный код, а не отображаемую переменную в Android

Я реализую взаимодействие Android-MySQL с PHP-скриптами. Скрипт отлично работает, когда я запускал его на своем ноутбуке.

Когда я пытался обработать значение, возвращаемое из сценариев PHP (возвращаемое echo) в моем приложении для Android, оказалось, что был возвращен весь необработанный сценарий PHP.

Я использовал Genymotion в качестве эмулятора, и в моем коде я установил URL-адрес 10.0.3.2.

Пока я пытался посетить страницу PHP с помощью Genymotion (10.0.3.2/test.php), браузер также загрузил необработанный скрипт.

Хотя я думаю, что это больше похоже на проблему с портом / конфигурацией, ниже приведены мои сценарии PHP и фрагмент кода Android.

PHP:

<?php

$db_name = "demo";
$mysql_username = "root";
$mysql_password = "password";
$server_name = "127.0.0.1";

$sql_query = "select * from table1;";

// establish connection to mysql database
$con = mysqli_connect($server_name, $mysql_username, $mysql_password, 
$db_name);

$result = mysqli_query($con, $sql_query);

$return_arr = array();

while ($row = mysqli_fetch_array($result))
{
    $return_arr[] = array(
        'id' => $row['id'],
        'size' => $row['size'],
        'material' => $row['material'],
        'date' => $row['date']
    );
}

header('Content-Type: application/json');
echo json_encode(array("server_response"=>$return_arr));

mysqli_close($con);

?>

Android:

System.out.println («нет!»);

        StringRequest stringRequest = new StringRequest(Request.Method.POST, json_url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                System.out.println(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        });

        queueVolley.add(stringRequest);

Вопрос в том, как заставить PHP-скрипт возвращать правильные данные в Android? Он работал на MacBook Pro с Mojave OS.

Спасибо!

@ miken32, привет Майк, мой PHP-скрипт действительно работает в моем собственном браузере ноутбука, он просто не работает с кодом и эмулятором Android. Я проверил принятый ответ в этой ветке, и это не совсем мой случай.

Yezhen Wang 21.11.2018 05:40

Если ваш сервер возвращает код PHP, он не настроен должным образом и не имеет ничего общего с клиентской стороной.

miken32 21.11.2018 05:42

@ miken32, но он не возвращает PHP-код и отлично работает, когда я захожу в него на своем ноутбуке.

Yezhen Wang 21.11.2018 05:44

К какому URL вы обращаетесь?

miken32 21.11.2018 05:45

на моем ноутбуке: localhost: 8080 / test.php, в коде Android и в браузере Android: 10.0.3.2/test.php

Yezhen Wang 21.11.2018 05:47

Затем сервер, работающий на порту 8080, и сервер, работающий на порту 80, должны быть настроены по-другому.

miken32 21.11.2018 05:49

Не могли бы вы уточнить немного подробнее? Когда я захожу на 10.0.3.2:80 на стороне Android, он был направлен на 10.0.3.2 и показывает «Работает».

Yezhen Wang 21.11.2018 05:52

Я не знаю, какая у вас настройка, поэтому я не могу сказать больше, чем то, что ваш веб-сервер настроен неправильно. «Работает» - это статическая страница, поставляемая с Apache. Ваш веб-сервер работает, но не настроен для обслуживания PHP.

miken32 21.11.2018 05:55

Если вы используете localhost: 8080 / test.php на ноутбуке, вы должны использовать 10.0.3.2:8080/test.php в эмуляторе. Используйте везде один и тот же порт 8080.

Joni 21.11.2018 05:59

Я выполнил онлайн-инструкцию. Перейдите в / Library / WebServer / Documents / the_folder_for_php_files и запустите php -S localhost: 8080

Yezhen Wang 21.11.2018 05:59

@Joni 10.0.3.2:8080 показывает "ERR_CONNECTION_REFUSED"

Yezhen Wang 21.11.2018 06:00

Перезагрузите php-сервер с помощью php -S 0:8080. Либо сервер больше не работает, либо эмулятор пытается подключиться к неправильному локальному IP-адресу, в любом случае привязка ко всем адресам (ip 0.0.0.0) должна помочь

Joni 21.11.2018 06:07

@Joni omg, это сработало! Не могли бы вы объяснить, почему это работает? Это потому, что теперь он прослушивает все порты с 0-8080?

Yezhen Wang 21.11.2018 06:09

Скорее он прослушивает порт 8080 на всех IP-адресах, настроенных на вашем компьютере. 0 - это сокращение от 0.0.0.0 (en.m.wikipedia.org/wiki/0.0.0.0)

Joni 21.11.2018 06:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
15
36
0

Другие вопросы по теме