2014-02-20 37 views
-1

我測試了代碼,並確定php代碼已執行,但JSON數組爲空。連接到數據庫,但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) 


沒有捕獲錯誤返回,所以我真的不知道爲什麼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