Intereting Posts
PhoneGap на Android: camera.getPicture success continue не вызывается Как сделать CombinedChart двумя различными шкалами на MPAndroidChart? Не удалось найти ****. Apk + android Что является стандартным способом публикации объекта JSON вместе с файлом с использованием MultipartEntityBuilder и HTTP-клиента на Android Firebase Cloud Messaging – выход из системы Как установить столбец таблицы в android Android Simple Timing Question Лучшая коммуникационная стратегия между клиентом Android и сервером .Net C # Не удалось отправить команду ATZ в ELM 327 после установления соединения с ELM327 в андроиде Как синтезировать звуки инструментов на Android (фортепиано, барабаны, гитара и т. Д.) Могу ли я настроить IVR на свой Android-телефон? Как разрешить исключение при построении пакета? Для Android требуется уровень соответствия компилятора 5.0 или 6.0. Вместо этого найдено «1,7» НЕОПРЕДЕЛЕННОЕ ТОПЛИВНОЕ ИСКЛЮЧЕНИЕ: В Android Studio, а не Eclipse Есть ли способ добавить внутреннюю тень в TextView на Android?

Ошибка анализа данных org.json.JSONException: значение <? Xml типа java.lang.String не может быть преобразовано в JSONArray

Я пишу приложение, предназначенное для запуска на Android-устройствах. Приложение суетится, чтобы прочитать информацию в базе данных Mysql через php, но когда я запускаю приложение, Log cat выдает сообщение об ошибке «Ошибка анализа данных org.json.JSONException: Значение

Код, который у меня есть, был загружен из учебника, пожалуйста, будьте терпеливы. У меня есть базовые знания в php и очень мало в java. Я уже тестировал скрипт php, и он работает безупречно, поэтому я не буду его прикреплять.

Main.java код:

 

package test.an2mysql; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.LinearLayout; import android.widget.TextView; public class main extends Activity { /** Called when the activity is first created. */ TextView txt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Create a crude view - this should really be set via the layout resources // but since its an example saves declaring them in the XML. LinearLayout rootLayout = new LinearLayout(getApplicationContext()); txt = new TextView(getApplicationContext()); rootLayout.addView(txt); setContentView(rootLayout); // Set the text and call the connect function. txt.setText("Connecting..."); //call the method to run the data retreival txt.setText(getServerData(KEY_121)); } public static final String KEY_121 = "http://10.1.1.19/cms/test/android2mysql/read.php"; //i use my real ip here private String getServerData(String returnString) { InputStream is = null; String result = ""; //the data to send ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("country","undefined")); //http post try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(KEY_121); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection "+e.toString()); } //convert response to string try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString()); } //parse json data try{ JSONArray jArray = new JSONArray(result); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Log.i("log_tag","id: "+json_data.getInt("id")+ ", country: "+json_data.getString("country")+ ", documentn: "+json_data.getInt("documentn") ); //Get an output to the screen returnString += "\n\t" + jArray.getJSONObject(i); } }catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); } return returnString; } }

Я хотел бы поблагодарить любую помощь, которую вы могли бы мне дать.

Как указано в комментариях к вашему вопросу, кажется, что ваш сервер возвращает XML, а не JSON. Вы можете легко подтвердить это, просто выведя result :

 }catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); Log.e("log_tag", "Failed data was:\n" + result); } 

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