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

현재 안드로이드와 JSP 사이에 데이터 주고받는 중에 문제가 있습니다.

–1 추천

안녕하세요. 많은 도움을 받아서 질문글 또 올립니다.

다름이 아니라, 현재 JSP 에서 간단하게 소스를 작성 후 안드로이드에서 파싱하려고 하는데 .. 

왜 태그들까지 전부 파싱이 되는지 잘 모르겠습니다 ㅜㅜ

 

JSP 소스 첨부합니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>{"num":"1","name":"김구라","addr":"노량진"}
</body>
</html>
 
 
제가 원하는건 {"num":"1","name":"김구라","addr":"노량진"}
이부분만 왔으면 좋겠는데
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
여기서부터 </html>까지 다 옵니다 ㅜㅜ 왜이럴까요?
 
혹시 몰라 안드로이드 소스도 첨부합니다.
 
 
1. 버튼이 눌렸을 때 쓰레드를 생성해서 동작시킵니다.
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;

 

익명사용자 님이 2014년 10월 7일 질문

1개의 답변

0 추천

저건 그냥 html로 표시되게 뿌려주는거고요, 소스보기로 봐도 {"num":"1","name":"김구라","addr":"노량진"} 이 부분만 나와야 합니다.

쎄미 (162,410 포인트) 님이 2014년 10월 8일 답변
혹시 소스보기로 보았을 때 {"num":"1","name":"김구라","addr":"노량진"}
나오게 하려면 어떻게 해야 할까요?
jsp 커뮤니티에서 질문하세요
...