ANDROID & PHP – Как отобразить JSONArray из MySql с помощью PHP

Код, который я использую для отображения значения таблицы в JSONArray ниже

send_data.php

 <?php include 'dbconfig.php'; $con = new mysqli($servername, $username, $password, $dbname); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $query = "select id,ask from pertanyaan"; $result = mysqli_query($con,$query); $rows = array(); while($r = mysqli_fetch_array($result)) { $rows[] =$r; } echo json_encode(array_values($rows)); mysqli_close($con); ?> 

и вывод JSONArray выглядит следующим образом:

[{"0":"1","id":"1","1":"pertanyaan ke 1","ask":"pertanyaan ke 1"},{"0":"2","id":"2","1":"pertanyaan ke 2","ask":"pertanyaan ke 2"},{"0":"3","id":"3","1":"pertanyaan ke 3","ask":"pertanyaan ke 3"},{"0":"4","id":"4","1":"pertanyaan ke 4","ask":"pertanyaan ke 4"},{"0":"5","id":"5","1":"pertanyaan ke 5","ask":"pertanyaan ke 5"}]

но каждый раз, когда я пытаюсь отобразить этот URL в android, я получил сообщение об ошибке

Value <html><body<>script of type java.lang.String cannot be converted to JSONArray

но когда я создаю новый API с тем же выходом здесь, в студию Android, его работа прекрасна,

я использовал неправильный код для кодирования JSON с PHP?

Solutions Collecting From Web of "ANDROID & PHP – Как отобразить JSONArray из MySql с помощью PHP"

проблема

HttpURLConnection не поддерживает JavaScript, но необходимый файл cookie создается с использованием JavaScript.

Ваш звонок

 String reqUrl = "http://zxccvvv.cuccfree.com/send_data.php"; URL url = new URL(reqUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

не работает, поскольку отсутствует файл cookie __test .

исправлять

С первого взгляда на источник JavaScript cookie кажется постоянным для заданного URL-адреса, поэтому может быть достаточно установить постоянный файл cookie :

 String cookie = "__test=2bf7c15501c0ec57f8e41cb84871a69c"; URL url = new URL(reqUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(7000); conn.setRequestMethod("GET"); conn.setRequestProperty("Cookie", cookie); 

Альтернатива. Используя WebView, мы можем захватить файл cookie, поэтому это предпочтительный подход, так как он не сломается, если cookie изменится, и это не так много задержки:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getCookie(); if(cookie!=null) { new GetContacts().execute(); } } private void getCookie(){ CookieManager.setAcceptFileSchemeCookies(true); WebView wv = new WebView(getApplicationContext()); wv.getSettings().setJavaScriptEnabled(true); wv.loadUrl(url); cookie = CookieManager.getInstance().getCookie("zxccvvv.cuccfree.com"); } 

и установите его, как в приведенном выше примере:

 conn.setRequestProperty("Cookie", cookie); 

Выход в logcat

 Response from url: [{"0":"1","id":"1","1":"pertanyaan ke 1","ask":"pertanyaan ke 1"},{"0":"2","id":"2","1":"pertanyaan ke 2","ask":"pertanyaan ke 2"},{"0":"3","id":"3","1":"pertanyaan ke 3","ask":"pertanyaan ke 3"},{"0":"4","id":"4","1":"pertanyaan ke 4","ask":"pertanyaan ke 4"},{"0":"5","id":"5","1":"pertanyaan ke 5","ask":"pertanyaan ke 5"}]