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

로그인 성공 실패 여부에 따른 텍스트 불러오기 질문입니다.

0 추천
public class MainActivity extends Activity {
 
private EditText userid;
private EditText passwd;
private Button login;
private TextView text;
 
Handler handler = new Handler();
 
String result;
ArrayList<String> items = new ArrayList<String>();
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
userid = (EditText) findViewById(R.id.userid);
passwd = (EditText) findViewById(R.id.passwd);
login = (Button) findViewById(R.id.login);
text = (TextView) findViewById(R.id.text);
 
// 버튼 이벤트 처
login.setOnClickListener(new OnClickListener() {
 
@Override
public void onClick(View v) {
showDialog(1);
 
String userid1 = userid.getText().toString();
String passwd1 = passwd.getText().toString();
 
// 서버에 넘겨줄 파라미터 저장
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("userid1", userid1));
list.add(new BasicNameValuePair("passwd1", passwd1));
 
final String urlPath = "http://웹/xml/appXml.php?userid="
+ userid1 + "&passwd=" + passwd1;
 
// 네트워크 연동을 위한 작업 스레드 생성
Thread t = new Thread(new Runnable() {
 
@Override
public void run() {
 
InputStream is = requestGet(urlPath);
final String result = streamToString(is);
// final String resultXml = streamToString(is);
// final int a = Integer.parseInt(result);
 
result.trim();
handler.post(new Runnable() {
 
@Override
public void run() {
 
String mid = result.substring(
result.indexOf("<mid>") + 5,
result.lastIndexOf("</mid>"));
String name = result.substring(
result.indexOf("<name>") + 6,
result.lastIndexOf("</name>"));
if (result != null) {
text.setText(mid + name);
} else
{
 
text.setText("실패");
 
}
 
removeDialog(1);
}
});
 
}
});
t.start();
}
});
 
/*
* try { XmlPullParser parser = getResources().getXml(R.id.text);
* while(parser.getEventType() != XmlPullParser.END_DOCUMENT){
* if(parser.getEventType() == XmlPullParser.START_TAG){
* if(parser.getName().equals(parser)){
* items.add(parser.getAttributeValue(0)); } } parser.next(); } } catch
* (Throwable t) { // TODO: handle exception }
*/
 
} // end onCreate
 
// Get 요청처리 메소드
public InputStream requestGet(String requestUrl) {
try {
// 요청하기
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(requestUrl);
HttpResponse response = client.execute(request);
 
// 응답하기
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
 
return is;
} catch (Exception e) {
e.printStackTrace();
}
return null;
 
}// end requestGet
 
//
public String streamToString(InputStream is) {
StringBuffer buffer = new StringBuffer();
 
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
String str = reader.readLine();
while (str != null) {
buffer.append(str);
str = reader.readLine();
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
 
}// end streamToString
 
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
 
}
 
현재 앱에서 웹에 호출하여 로그인이 성공하면 php의 텍스트를 보여주는 기능을 구현하였습니다.
그런데 로그인 성공시에는 php에서 원하는 내용을 불러오지만
로그인 실패시에는  로그인 실패 메시지가 나타나지 않고 앱이 중지가 되는데요 
이것을 어떻게 수정해야되나요?
 
qwlwwmq (560 포인트) 님이 2014년 2월 6일 질문

2개의 답변

0 추천
success 일 때와 error 일 경우 xml 구성 형태가 다를 겁니다.

일단 log 로 xml 이 어떻게 구성되어 있는지 파악한 뒤 xml parser 를 수정하세요
aucd29 (218,390 포인트) 님이 2014년 2월 7일 답변
0 추천
일단 AsyncTask 로 바꾸시고
 
웹에서 받고나서 리턴으로 로그인이 성공하면 true 값을 보내준 소스를 만들구요
 
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
 
여기 밑에 
String login_result = EntityUtils.toString(entity).trim(); //추가
doInBackground 끝나는 시점에 
 
protected void onPostExecute(Void result) {
if ("false".equals(login_result )) {
Log.d("Activity" , "로그인실패");
}else {
Log.d("Activity" , "로그인성공");
}
추가

 

콜벳 (7,150 포인트) 님이 2014년 12월 11일 답변
...