public void getJSON(View v) {
String url = "http://203.230.150.218:8088/Test/getJSON.jsp";
// 스레드 객체를 생성해서 작업을 시킨다.
GetJSONThread thread = new GetJSONThread(handler, null, url);
thread.start();
}
2. 쓰레드 클래스 입니다.
public class GetJSONThread extends Thread {
// 메인스레드의 핸들러
Handler handler;
// 전송할 데이터가 담겨있는 map객체
Map<String, String> map;
// 전송할 url 주소
String url;
// 생성자
public GetJSONThread(Handler handler, Map<String, String> map, String url) {
this.handler = handler;
this.map = map;
this.url = url;
}
// 스레드 본체
@Override
public void run() {
HttpURLConnection conn = null;
StringBuilder builder = new StringBuilder();
try {
URL url = new URL(this.url);
conn = (HttpURLConnection) url.openConnection();
if (conn != null) {// 정상접속이 되었다면
conn.setConnectTimeout(10000);// 최대 대기시간10초
conn.setUseCaches(false);// 캐쉬사용안함
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
// InputStreamReader 객체 얻어오기
InputStreamReader isr = new InputStreamReader(
conn.getInputStream());
BufferedReader br = new BufferedReader(isr);
// 반복문 돌면서 읽어오기
while (true) {
String line = br.readLine();
if (line == null)
break;
// 읽어온 문자열을 객체에 저장
builder.append(line).append('\n');
} // end while
br.close();
}// if
else {
Message msg = new Message();
msg = handler.obtainMessage();
msg.what = 3; // 실패
msg.obj = "데이터를 받아올 수 없습니다.";
handler.sendMessage(msg);
}
}// if
Message msg = new Message();
msg = handler.obtainMessage();
msg.what = 2; // 성공
msg.obj = builder.toString(); // 가져온 String Data를 저장
handler.sendMessage(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
Log.e("MainActivity", e.getMessage());
Message msg = new Message();
msg.what = 3; // 실패
msg.obj = "데이터를 받아올 수 없습니다.";
handler.sendMessage(msg);
} finally {
conn.disconnect(); // 접속 종료
}
}// run
3. 파싱하는 핸들러 입니다.
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
// 전송결과를 메시지로 받는다
case 2: // getJSON성공
// String jsonStr1 = (String) msg.obj;
Log.v("MainActivity", "msg.obj : " + (String) msg.obj);
try {
JSONObject jsonObj = new JSONObject((String) msg.obj);
String num = jsonObj.getString("num");
String name = jsonObj.getString("name");
String addr = jsonObj.getString("addr");
Toast.makeText(MainActivity.this,
"num: " + num + "name:" + name + "addr: " + addr, 0)
.show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.v("MainActivity", "Error : " + e.getMessage());
}
break;