마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드로 URL의 JSON방식 받아오기 질문드립니다.

0 추천
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  Button submitButton = (Button) this.findViewById(R.id.submit_btn);
  submitButton.setOnClickListener(new Button.OnClickListener() {
   public void onClick(View v) {
    new ReadJSONFeed().execute("http://117.16.231.212:8010/checkNewOrder");
   }
  });
 }

 private class ReadJSONFeed extends AsyncTask<String, String, String> {
  
  protected void onPreExecute() { // 안씀.
  }

  @Override
  protected String doInBackground(String... urls) { // 백그라운드 작업
   
   HttpClient httpclient = new DefaultHttpClient();
   StringBuilder builder = new StringBuilder();
   HttpPost httppost = new HttpPost(urls[0]);
   try {
    HttpResponse response = httpclient.execute(httppost);
    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);
     }
     
     
    }
   } catch (Exception e) {
    e.printStackTrace();
   }
  // TextView tv1 = (TextView) findViewById(R.id.textview1);
  // tv1.setText(builder.toString());
   return builder.toString();
   
  }

  protected void onPostExecute(String data) {
   
   String stateInfo = "";
   
   try {
    JSONArray jArr = new JSONArray(data); // 배열
    
    for (int i = 0; i < jArr.length(); i++) { 
     
     JSONObject json = new JSONObject(); // 객체
     // 배열 길이가 ~까지
     // 다음을 객체로 받아온다 . 객체를 순서대로 저장한다.
     json = jArr.getJSONObject(i);

     stateInfo += json.getString("name") + "\n";
     //stateInfo += json.getString("menu") + "\n";
     //stateInfo += json.getString("tableName") + "\n";

    }
   } catch (JSONException e) {
    e.printStackTrace();
   }
   
   TextView resp = (TextView) findViewById(R.id.response);
   
   if (stateInfo.trim().length() > 0)
    resp.setText(stateInfo);
   
   else
    resp.setText("Sorry no match found");
  }
 }
}

http://117.16.231.212:8010/checkNewOrder

나온 URL로 데이터를 받아서 안드로이드로 no, menu 등의 내용을 출력하려고 하는데 잘 되지 않아서 질문드립니다.

어디를 수정해야할까여?ㅠㅠ

익명사용자 님이 2014년 9월 26일 질문

1개의 답변

+1 추천
링크를 열어보니 최상위가 { } 로 되어있네요
 
JSONArray jArr = new JSONArray(data);
아니라 
JSONObject obj = new JSONObject(data);
로 하시고
JSONArray jArr = obj.getJSONArray("data");
이렇게해서 배열을 가져오세요
alkyne (22,960 포인트) 님이 2014년 9월 26일 답변
...