티스토리 뷰

Open API 를 이용하여 서울시 실시간 지하철 도착정보를 받아보자.



오픈 API 는 서울시 오픈 API를 이용하였다. 



1. 서울시 오픈 API 회원가입 및 원하는 API 선택

2. 링크 복사

3. 링크의 xml 또는 json 확인

4. 파싱하는 소스 구현

5. 결과 확인



http://data.seoul.go.kr/index.jsp


회원가입 > 


 


오픈 데이터 > 오픈 API 
    

 



원하는 API 검색 

 


해당 API 선택


 



API 링크 복사 > 중간에 (인증키) 는 회원가입 후 인증키 발급을 받을 수 있다.  

연습중에는 sample로 구현


 


링크를 sample로 변경 후 해당 데이터를 확인 가능하다.

XML 파일로 확인됨.


http://swopenapi.seoul.go.kr/api/subway/sample/xml/realtimeStationArrival/0/5/%EC%84%9C%EC%9A%B8


 


http://swopenapi.seoul.go.kr/api/subway/sample/json/realtimeStationArrival/0/5/%EC%84%9C%EC%9A%B8

( SJON )


 



MainActivity.java JSON 파일로 구현


MainActivity.java

public class MainActivity extends AppCompatActivity {
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Button btn = (Button) findViewById(R.id.button);
        textView = (TextView) findViewById(R.id.textView);
 
 
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                getApi();
            }
        });
 
    }
 
    private void getApi(){
 
         new AsyncTask<Void, Void, String>() {
            ProgressDialog progress;
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                progress = new ProgressDialog(MainActivity.this);
                progress.setTitle("다운로드");
                progress.setMessage("download");
                progress.setProgressStyle((ProgressDialog.STYLE_SPINNER));
                progress.setCancelable(false);
                progress.show();
            }
 
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                StringBuffer sb = new  StringBuffer();
                try {
                    JSONObject json = new JSONObject(s);
 
                    JSONArray rows = json.getJSONArray("realtimeArrivalList");
 
                    int length = rows.length();
                    for(int i=0; i < length; i ++){
                        JSONObject result = (JSONObject) rows.get(i);
                        String trainName = result.getString("trainLineNm");
                        sb.append(trainName + "\n");
 
                    }
 
                }catch (Exception e ){}
 
                textView.setText(sb.toString());
                progress.dismiss();
            }
 
            @Override
            protected String doInBackground(Void... params) {
                String result = "";
                try {
                   //서울시 오픈 API 제공(샘플 주소 json으로 작업)
                    result = Remote.getData("http://swopenapi.seoul.go.kr/api/subway/sample/json/realtimeStationArrival/0/5/%EC%84%9C%EC%9A%B8");
 
                } catch (Exception e) {
                    e.printStackTrace();
                }
 
                return result;
            }
        }.execute();
    }
 
 
}
 
cs



Remote.java
public class Remote {
    private static final String TAG = "ResponseCode : ";
    // http 연결은 static 권장
    public static String getData (String webURL) throws Exception{
        StringBuilder result = new StringBuilder();
        String dataLine;
            URL url = new URL(webURL);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            // REST API = GET(조회), POST(입력), DELETE(삭제), PUT(수정)
            conn.setRequestMethod("GET");
            int responseCode = conn.getResponseCode();
 
            // 200
            if(responseCode == HttpsURLConnection.HTTP_OK ){
                BufferedReader br = new BufferedReader(new InputStreamReader( conn.getInputStream()));
 
                while( (dataLine = br.readLine()) != null){
                    result.append(dataLine);
                }
                br.close();
            }else{
                Log.i(TAG,""+responseCode );
            }
 
 
        return result.toString();
    }
}
 
cs


결과 확인



'ANDROID > android' 카테고리의 다른 글

android HTTP Cookie 사용.  (0) 2016.10.25
android HTTP URL Connection  (0) 2016.10.25
안드로이드 키보드 제어  (0) 2016.10.13
이미지 불러오기  (0) 2016.10.13
TraceView를 활용한 Code 퍼포먼스 확인  (0) 2016.10.13
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday