2014-11-09 4 views
0

나는 프로그램을 작성했습니다 URL에서 json 파일을 다운로드하고 텍스트보기로 표시하려고합니다 .. 버튼을 클릭하면 프로그램이 몇 초 후에 중지됩니다. 문제가 무엇인지 알 수 없습니다. 제발 도와주세요 ..URL에서 Json 파일을 읽는 방법은 무엇입니까?

자바 코드 :

public class MainActivity extends Activity { 
TextView tx; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button b=(Button)findViewById(R.id.button2); 
    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      new GetJsonTask().execute("http://shahid.ifilmtv.ir/query/englishcurrentshows"); 

     } 
    }); 


} 
public class GetJsonTask extends AsyncTask<String, Void, String> 
{ 

    @Override 
    protected String doInBackground(String... urls) { 
     // TODO Auto-generated method stub 
     return getJson(urls[0]); 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     JSONArray jsonArray; 
     try { 
      jsonArray = new JSONArray(result); 
     JSONObject object = jsonArray.getJSONObject(1); 
     tx.setText(object.getString("id")); 
    } 
    catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

} 

    public String getJson(String url) { 

     try { 
      InputStream inputStream = null; 
      DefaultHttpClient defaultHttpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      HttpResponse httpResponse = defaultHttpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      inputStream = httpEntity.getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      inputStream.close(); 
      String result = sb.toString(); 
      return result; 
     } catch (Exception ex) { 
       Toast.makeText(getApplicationContext(), "ERROR : " + ex, Toast.LENGTH_LONG).show(); 
      return null; 
     } 

    } 

}

+0

일부 logcat? – Yazan

답변

0

나는 문제가해서 getJSON 방법으로 생각합니다. 다음 코드를 다시 작성했습니다. 이것을 시도하십시오.

public String getJson(String url) { 
    try { 
     DefaultHttpClient defaultHttpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 
     httpost.setHeader("Accept", "application/json"); 
     httpost.setHeader("Content-type", "application/json"); 

     ResponseHandler responseHandler = new BasicResponseHandler(); 
     Object resp = defaultHttpClient.execute(httpPost, responseHandler); 
     String json = resp.toString(); 
     // create a object here if you want 
     JSONObject obj = new JSONObject(json); 
     return json;   
    } catch (Exception ex) { 
      Toast.makeText(getApplicationContext(), "ERROR : " + ex, Toast.LENGTH_LONG).show(); 
     return null; 
    } 

} 
관련 문제