2012-08-16 3 views
0

일부 JSON을 구문 분석하고이를 내 안드로이드 응용 프로그램의 EditText 필드로 보내려고합니다. 나는 최근에 내가 얻은 오류가 내 StringBuilder의 내용에서 파생되었다는 것을 발견했습니다. 내 StringBuilder를 사용하는 대신 json 샘플을 문자열로 하드 코딩하여 EditText 필드로 보냈습니다. 그건 잘 작동하고 내가 보여주고 싶은 가치를 얻을. 그러나 내가 사용하고 하드 코딩하지 API를 액세스를 통해 작동하도록이 필요합니다. 아래는 JSON Parser 클래스입니다. inputStream이 닫히기 전에 추가 한 후 내 stringBuilder에있는 내용을 확인할 수있는 방법이 있습니까? 이 방법으로 정렬하여 문자열을 하드 코딩하는 대신 stringBuilder.toString()으로 반환 할 수 있습니다.String Builder의 내용을 확인하는 방법

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 인을 닫습니다 직전.

업데이트 : incorrect URL 메시지가 자주 발생합니다. 대신이 일을

+0

감사합니다. stringBuilder의 내용이

입니다. 596 서비스를 찾을 수 없습니다.

왜 지금이 문제가 발생하는지 잘 모르겠습니다. 내 URL이 유효하며 API 키가 활성화되어 있습니다. 아무도 이걸 일으키는 어떤 단서가 있습니까? 썩은 토마토 API를 사용하여 btw. – user881667

+0

사용중인 URL을 확인하십시오. 업데이트를 참조하십시오. – Reimeus

0

시도 :

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

자세한 설명이 필요합니다. – Erik

0

당신은 가능한 자바 객체로 JSON을 구문 분석 org.json.JSONObject를 사용할 수 있습니다.

관련 문제