2014-02-20 2 views
-1

Ive проверил код и точно знал, что PHP-код выполняется, но массив JSON равен NULL.Подключен к базе данных, но массив JSON пуст

Вот код, в котором называется JSON:

JSONParser jParser = new JSONParser(); 
// get JSON data from URL 
JSONArray json = jParser.getJSONFromUrl(url); 

А вот класс JSONParser:

public class JSONParser { 

static InputStream iStream = null; 
static JSONArray jarray = null; 
static String json = ""; 

public JSONParser() { 
} 

public JSONArray getJSONFromUrl(String url) { 

    StringBuilder builder = new StringBuilder(); 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet(url); 
    try { 
     HttpResponse response = client.execute(httpGet); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     if (statusCode == 200) { 
      HttpEntity entity = response.getEntity(); 
      InputStream content = entity.getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       builder.append(line); 
      } 
     } else { 
      Log.e("==>", "Failed to download file"); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    // Parse String to JSON object 
    try { 
     jarray = new JSONArray(builder.toString()); 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    // return JSON Object 
    return jarray; 

} 

}

Вот трассировки стека:

02-20 18:33:56.640 14502-14986/com.familiestvw.whatson E/JSON Parser﹕ Error parsing data org.json.JSONException: Value < of type java.lang.String cannot be converted to JSONArray 
02-20 18:33:56.680 14502-14986/com.familiestvw.whatson E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 
java.lang.RuntimeException: An error occured while executing doInBackground() 
     at android.os.AsyncTask$3.done(AsyncTask.java:299) 
     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
     at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
     at java.lang.Thread.run(Thread.java:841) 
Caused by: java.lang.NullPointerException 
     at com.familiestvw.whatson.GetData$ProgressTask.doInBackground(GetData.java:64) 
     at com.familiestvw.whatson.GetData$ProgressTask.doInBackground(GetData.java:51) 
     at android.os.AsyncTask$2.call(AsyncTask.java:287) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:234) 


Ни одна из ошибок catch не возвращается, поэтому я действительно не знаю, почему массив JSON пуст.

Любая помощь будет высоко ценится

+0

Опубликовать stacktrace. – Raghunandan

ответ

0
builder.toString() 

Ответ вы получаете не является допустимым JSONString поэтому постарайтесь проследить builder.toString(). Это может быть сообщение об ошибке HTML с сервера. Запишите ответ и проверьте, что вы получаете.

Error parsing data org.json.JSONException: Value < of type java.lang.String cannot be converted to JSONArray 

Ошибка говорит все. В ответе есть недопустимый символ <.

Log.d("JSONParser", builder.toString()); 
+0

получил это спасибо – JamzDe3rd

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