public class MainActivity extends Activity {
Button hp_btn, auth_btn;
EditText hp_edt, auth_edt;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hp_btn = (Button) findViewById(R.id.hp_btn);
auth_btn = (Button) findViewById(R.id.auth_btn);
hp_edt = (EditText) findViewById(R.id.hp_edt);
auth_edt = (EditText) findViewById(R.id.auth_edt);
tv = (TextView) findViewById(R.id.tv1); //파싱한 데이터를 출력하는 TextView
hp_btn.setOnClickListener(new View.OnClickListener() {
// hp_btn을 누를시
// AsyncTask hptask()실행
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new hptask().execute(hp_edt.getText().toString());
}
});
}
public class hptask extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... unused) {
// AsyncTask 실행시
// postDate() 실행, 인자 unused[0] EditText 값인데 신경안씀..
postData(unused[0]);
return (null);
}
@Override
protected void onProgressUpdate(Void... item) {
}
// doInBackground() 메소드의 작업이 완료된 직후 호출됨
@Override
protected void onPostExecute(Void unused) {
}
}
public void postData(String valueIWantToSend) {
// Create a new HttpClient and Post Header
try {
URL text = new URL("http://localhost/likexml.php");
XmlPullParserFactory parserCreator = XmlPullParserFactory
.newInstance();
XmlPullParser parser = parserCreator.newPullParser();
InputStream is = text.openStream();
parser.setInput(is, "UTF-8"); // 가져오기를 시작하는 곳
int parserEvent = parser.getEventType();
String data = ""; // TextView tv에 쓰기 위해서
boolean check_item = false; // tag에 접근했나
while (parserEvent != XmlPullParser.END_DOCUMENT) {
switch (parserEvent) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG:
// <phone>을 만나면 true
if (parser.getName().equals("phone")) {
check_item = true;
}
break;
case XmlPullParser.TEXT:
// TEXT을 String data에 저장.
if (check_item) {
data = parser.getText();
check_item = false;
}
break;
}
parserEvent = parser.next(); // 다음 태그로 이동하기
}
// TextView tv 에 출력
tv.setText("주문 항목 :" + data);
} catch (Exception e) {
}
}
}
//likexml.php
<?php
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<node>";
echo "
<phone>5050</phone>
<name>7777 </name>
<score>43</score>
";
echo "</node>";
?>
likexml.php 이라는 파일에 xml파일처럼 출력해주고
그 likexml.php에 접속해서 xml을 리스폰받아 읽어 들여 <phone>5050</phone> 에 5050을 파싱을 통하여 textview에 출력해주려는데 출력이 안됩니다.
Asynctask의 문제일까요??
조언좀 부탁드립니다...