2012-02-01 33 views
0

所以我谷歌搜索,並找到類似我需要的例子。我已經調整和調整了並解決了我的大部分問題,但已經被我似乎無法通過的這個問題所困惑。一些Backround:所以我正在構建一個應用程序,通過PHP生成一個JSON對象來查詢MySQL數據庫。我可以在SDK的Web瀏覽器中看到「[爲什麼是天藍色」}],因此我知道我可以訪問該對象。權限也在我的清單中正確設置。問題出現在我嘗試將對象解析爲字符串時。我從我的日誌貓中得到「錯誤轉換結果java.lang.NullPointerException」。JSON解析錯誤(沒有HTTP錯誤,只是字符串轉換)

現在,我已經試過

//convert response to string 
    try{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
     String json = reader.readLine(); 
     JSONTokener tokener = new JSONTokener(json); 
     JSONArray finalResult = new JSONArray(tokener); 

      }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
      } 

我也試過

try{ 
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
        sb = new StringBuilder(); 
        sb.append(reader.readLine() + "\n"); 
        String line="0"; 
        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()); 
      } 

我想我會後我的HTTP(甚至在自己的線程最佳實踐耶 - !後來我使用全局變量(捂臉))

new Thread() { 
    public void run() { 
      try{ 
       HttpClient httpclient = new DefaultHttpClient(); 

          HttpPost httppost = new HttpPost("http://192.168.1.55/qgrap.php"); 

          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

          HttpResponse response = httpclient.execute(httppost); 

       }catch(Exception e){ 
        Log.e("log_tag", "Error in http connection"+e.toString()); 
       } 
    } 
    }.start(); 

在HTTP第二代碼集,你需要做一些獲取內容的東西無論哪種方式我想專注於第一個代碼集。這裏的迴應是一個全局變量。當它傳入BufferReader參數時會被操作。我沒有錯誤的點字符串json = reader.readLine();我應該可以以字符串的形式訪問數據。無論哪種方式日誌說不行,我不知道爲什麼。另外我不能只是在PHP端創建一個字符串,而不是使用JSON?

BOUNTY:千個因特網和

回答

0

好了,所以我鑿開這一點,因爲我不希望使用GSON我希望我的代碼工作。我有一個錯誤,我不明白 轉換結果java.lang.NullPointerException繁榮就是它的錯誤。

 try{ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
    String json = reader.readLine(); 
    JSONTokener tokener = new JSONTokener(json); 
    JSONArray finalResult = new JSONArray(tokener); 

     }catch(Exception e){ 
      Log.e("log_tag", "Error converting result "+e.toString()); 
     } 

這段代碼中的某處是問題所在。我沒有看到它。 無論哪種方式,即時將HTML5

1
+0

真棒謝謝。我很確定那就是我要找的。今天我有很多功課,所以在測試之前我會有一段時間。如果它確實有效,但我可能不會將此標記爲答案。可以說,我的應用程序起飛(這看起來不錯)這將使服務器端更多的工作,並依賴於我的服務器的規格,以及許多人如何挑選這個東西(它的免費),可能是很多開銷。所以我想稍後再開放一下。但是,再次感謝你。 – 2012-02-01 18:06:31

+0

所以我很笨Gson不是服務器端我只是簡要回顧了文檔。所以給我一下,因爲我正在處理我的代碼。我想你明白了。 – 2012-02-01 23:46:57

0

你應該以某種循環的捆綁你的輸入,而不是假設它是所有在第一行:

BufferedReader userInfoReader = new BufferedReader(new InputStreamReader(url.openStream())); 
StringBuilder builder = new StringBuilder(); 
while ((line = userInfoReader.readLine()) != null) { 
    builder.append(line).append("\n"); 
} 
JSONTokener tokener = new JSONTokener(builder.toString()); 
JSONArray finalResult = new JSONArray(tokener);