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

안드로이드 로그인 질문입니다.

0 추천
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
public class MainActivity extends Activity {
 
EditText userid;
EditText passwd;
Button login;
TextView text;
Handler handler = new Handler();
 
String result;
 
@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/xmlApp.php?userid="
+ userid1 + "&passwd=" + passwd1;
 
// 네트워크 연동을 위한 작업 스레드 생성
Thread t = new Thread(new Runnable() {
 
@Override
public void run() {
 
InputStream is = requestGet(urlPath);
result = streamToString(is);
 
handler.post(new Runnable() {
 
@Override
public void run() {
text.setText(result);
removeDialog(1);
}
});
 
}
});
t.start();
}
});
 
} // 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;
}
 
}
 
앱에서 아이디 비밀번호 입력후 웹으로 호출하여 로그인 기능을 구현중입니다. 
현재 아이디가 존재하면 텍스트창에 1이나타나고 존재하지않으면 0이 나오도록 구현되어있는데요 
로그인시 1이 나오면 토스트 창에 로그인성공 메시지가 출력되고
0이 나오면 로그인 실패 메시지가 출력되도록 하는법좀 알려주세요.  
 
qwlwwmq (560 포인트) 님이 2014년 2월 3일 질문

1개의 답변

0 추천
핸들러를 통해서 리턴상태를 제어 하시면 될듯 합니다.

 

로그인에 대한 값이 떨어 졌을때 핸들러를 호출해서 토스트를 띄우면 될듯 하네요.
안들오 (790 포인트) 님이 2014년 2월 3일 답변
Thread t = new Thread(new Runnable() {

                    @Override
                    public void run() {

                        InputStream is = requestGet(urlPath);
                        result = streamToString(is);

                        handler.post(new Runnable() {

                            @Override
                            public void run() {
                           
                               
                                text.setText(result);
                                removeDialog(1);
                            }
                        });

네 그래서 이 부분에 if문써서 구현해보려 하는데요 경험이 부족해서 그런지 생각대로 잘 안되네요 ㅠ 어떻게 코딩을 해야되는건가요?
Thread t = new Thread(new Runnable() {

                    @Override
                    public void run() {

                        InputStream is = requestGet(urlPath);
                        result = streamToString(is);

                        handler.post(new Runnable() {

                            @Override
                            public void run() {
                            
                                
                                text.setText(result);
                                Message msg =  new Message;
                                msg,what = reslt;
                                handler,sendMessage(msg)
                                removeDialog(1);
                            }
                        });


이런식으로 코딩하고
핸들러 내부에서 호출해주면 되지 않을까요?
...