소스코드입니다.
public class LogInActivity extends Activity{
private TextView titleTextView;
private TextView joinTextView;
private EditText edtId;
private EditText edtPass;
private EditText edtPasschk;
private String a = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/NanumBarunGothicBold.ttf");
titleTextView = (TextView) findViewById(R.id.title_text);
titleTextView.setTypeface(typeFace);
EditText edtId=(EditText)findViewById(R.id.edtid);
EditText edtPass=(EditText)findViewById(R.id.edtpass);
EditText edtPasschk = (EditText)findViewById(R.id.edtpasschk);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_login: {
//String id = edtId.getText().toString(); // 사용자 입력된 아이디 값을 id 변수에 넣습니다.
//String pass = edtPass.getText().toString(); // 사용자 입력된 패스워드를 pass변수에 넣습니다.
//if(id.trim().length() > 0 && pass.trim().length() > 0) // 받은 값들의 공백제거
GetData task1 = new GetData();
task1.execute(new String[]{"http://127.0.0.1:3306/select.php"});
break;
}
case R.id.btn_find_id: {
Toast.makeText(this, v.getId() + "아이디찾기", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LogInActivity.this, FindIdActivity.class);
startActivity(intent);
break;
}
case R.id.btn_find_password: {
Toast.makeText(this, v.getId() + "비밀번호찾기", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LogInActivity.this, FindPassActivity.class);
startActivity(intent);
break;
}
case R.id.btn_join: {
Toast.makeText(this, v.getId() + "회원가입", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LogInActivity.this, RegisterActivity.class);
startActivity(intent);
break;
}
}
}
public class GetData extends AsyncTask<String, Void, Boolean>{
//ProgressDialog dialog = new ProgressDialog(LogInActivity.this);
String text = "";
@Override
protected void onPreExecute() {
//dialog.setMessage("데이터를 읽어오는중..");
//dialog.show();
}
@Override
protected Boolean doInBackground(String... urls) {
InputStream is1;
for(String url1 : urls){ // inputstream을 통해 웹에서 데이터를 읽어옵니다.
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url1); // 셀렉트 테이블 해서 정보를 가져옵니다.
HttpResponse response = httpclient.execute(httppost);
Log.d("TAG", "111"+url1);
is1 = response.getEntity().getContent();
}
catch(Exception e){
Toast.makeText(LogInActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
return false;
}
// STRING 텍스트로 변환 시키는 작업을 합니다.
BufferedReader reader;
try {
reader = new BufferedReader(new InputStreamReader(is1, "iso-8859-1"),8);
String line = null;
while((line = reader.readLine()) != null) {
text += line + "\n";
}
is1.close();
}catch(Exception e1){
e1.printStackTrace();
}
// json 변환 후 붙여넣는 작업.
try{
Log.d("TAG", "1111"+text);
JSONObject jobject = new JSONObject(text);
JSONArray results = jobject.getJSONArray("result");
a += "id : " + jobject.get("id");
a += "\n";
a += "password : " + jobject.get("password");
}
catch(JSONException e){
e.printStackTrace();
}
}
return true;
}
protected void onPostExecute(Boolean result){
if(result == true){
Toast.makeText(LogInActivity.this, text, Toast.LENGTH_LONG).show();
// text 출력해보기
}
else{
Toast.makeText(LogInActivity.this, "에러임", Toast.LENGTH_SHORT).show();
}
//dialog.dismiss();
}
}
}
기본적으로 onPreExecute() -> doInBackground() -> onPostExecute() 순서로 작업이 진행되는 쓰레드 인 것은 알고있습니다. 그리고 기본적으로 쓰레드를 쓸 때 쓰레드에서 메인 쓰레드로 UI 를 호출하는 건 허용되지 않아 신경써서 코딩했습니다. 지금 Log찍어서 어디서 값을 못받아오나 체크를해보았는데
doInBackground() 메서드 안에 HTTP 통신으로 URL을 받아오는 구문에서 URL(PHP경로)를 인식하지 못하는 것 같습니다. 다시말해,
HTTP 통신 하는 부분에서 웹접속을 못하는 건지...
이 부분에서 로그를 찍어보았는데 111http://127.0.0.1:3306/select.php 이렇게는 찍는데
그 뒤로 접속을 못하는 것 같습니다. 무슨 이유인지, 어떤 부분을 체크해야하는지 문의드립니다.