2012-08-16 82 views
0

我想解析一些JSON並將其發送到我的android應用程序中的EditText字段。我最近發現我得到的錯誤是源自我的StringBuilder的內容。我沒有使用StringBuilder,而是將一個json樣本硬編碼爲一個字符串,並將其發送到EditText字段。這工作正常,我得到了我期待顯示的價值。不過,我需要通過訪問我正在使用的API而不是硬編碼來工作。以下是我的JSON解析器類。有沒有一種方法可以在inputStream關閉之前檢查我的stringBuilder中的內容。通過這種方式我可以將其排序並將我的jSon返回到stringBuilder.toString()而不是對其進行硬編碼。如何檢查字符串生成器的內容

package com.apitest.rottentomatoestest; 

import java.io.*; 
import org.apache.http.*; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.*; 

import android.util.Log; 

public class JSONParser { 

static InputStream inputStream = null; 
static JSONObject jObject = null; 
static String jSon = ""; 

public JSONParser() { 
    // TODO Auto-generated constructor stub 
} 

public JSONObject getJSONFromUrl(String url){ 

    //Make HTTP Request 
    try { 
     //defaultHttpClient 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 

     HttpResponse httpResponse = httpClient.execute(httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     inputStream = httpEntity.getContent(); 

    } catch (UnsupportedEncodingException e){ 
     e.printStackTrace(); 
    } catch (ClientProtocolException e){ 
     e.printStackTrace(); 
    }catch (IOException e){ 
     e.printStackTrace(); 
    } 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
     StringBuilder stringBuilder = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null){ 
      stringBuilder.append(line + "\n"); 
     } 
     inputStream.close(); 

     jSon = "{\"cast\":[{\"id\":\"162661723\",\"name\":\"Snoop Dogg\"}]}"; 

    } catch (Exception e){ 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 
    //try to parse the string to JSON Object 
    try { 
     jObject = new JSONObject(jSon); 

    } catch (JSONException e){ 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 
    //return JSON String 
    return jObject; 
} 

}

回答

0

您可以使用:

Log.d("JSON Contents", stringBuilder.toString()); 

之前你關閉InputStream。

更新:596 Service Not Found消息通常是由incorrect URL造成的。

+0

謝謝你做到了。我看到stringBuilder的內容是

596服務沒有找到

不知道爲什麼我現在得到這個。我的網址是有效的,API鍵是活動的。任何人有任何線索是什麼造成這種情況?使用爛番茄api btw。 – user881667 2012-08-17 00:52:56

+0

請檢查您正在使用的網址。查看更新。 – Reimeus 2012-08-17 01:17:42

0

嘗試這樣做,而不是:

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 
+0

這需要更多的解釋 – Erik 2017-04-13 17:25:50

0

可以使用org.json.JSONObject解析JSON成可用的Java對象。

相關問題