티스토리 뷰
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