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

httppost 통신할 경우 네트워크 lte 사용하면 접속이 안됩니다.

0 추천
void login() {
  try {
   // 인터넷 연결되어 있나 확인
   ConnectivityManager connect = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

   if (connect.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
     .getState() == NetworkInfo.State.CONNECTED
     || connect.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
       .getState() == NetworkInfo.State.CONNECTED) {
    // 연결 돼있는 경우
    SharedPreferences pref = getSharedPreferences(
      "configPreference", 0);
    httpclient = new DefaultHttpClient();
    httppost = new HttpPost(SERVER_ADDRESS + "/logcheck.php");

    nameValuePairs = new ArrayList<NameValuePair>(4);
    nameValuePairs.add(new BasicNameValuePair("serverIP", pref
      .getString("serverIp", "").trim()));
    nameValuePairs.add(new BasicNameValuePair("DBName", pref
      .getString("dbName", "").trim()));
    nameValuePairs.add(new BasicNameValuePair("name", edtId
      .getText().toString().trim()));
    nameValuePairs.add(new BasicNameValuePair("price", edtPW
      .getText().toString().trim()));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "euc-kr"));
    response = httpclient.execute(httppost);
    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    String response = httpclient.execute(httppost, responseHandler);

    runOnUiThread(new Runnable() {
     public void run() {
      // dialog.dismiss();
     }

    });
    if (response.equalsIgnoreCase(" User Found")) {
     runOnUiThread(new Runnable() {
      public void run() {
       SharedPreferences pref = getSharedPreferences(
         "configPreference", 0);
       SharedPreferences.Editor edit = pref.edit();

       if (pref.getBoolean("idCheck", false) == true) {
        edit.putString("userId", edtId.getText()
          .toString());
       } else {
        edit.putString("userId", "");
       }

       if (pref.getBoolean("pwCheck", false) == true) {
        edit.putString("userPW", edtPW.getText()
          .toString());
       } else {
        edit.putString("userPW", "");
       }
       edit.commit();
      }
     });
     Intent intent = new Intent(MainActivity.this, MainMenuActivity.class);
     startActivity(intent);
     finish();
    } else if (response.equalsIgnoreCase(" No Such User Found")) {
     showAlert1();
     runOnUiThread(new Runnable() {
      public void run() {
      }
     });
    } else {
     showAlert2();
    }
   } else {
    // 인터넷 연결 돼있지 않은 경우
    AlertDialog.Builder builder = new AlertDialog.Builder(
      MainActivity.this);
    builder.setTitle("Internet Error.");
    builder.setMessage("네트워크를 연결해 주세요.")
      .setCancelable(false)
      .setPositiveButton("OK",
        new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog,
           int id) {

         }
        });
    AlertDialog alert = builder.create();
    alert.show();
   }

  } catch (Exception e) {
   // dialog.dismiss();
   System.out.println("Exception : " + e.getMessage());
  }
 }

안드로이드에서 mysql 에 접속해서 로그인하는 것을 구현하기 위해서 http통신을 사용했습니다.

이제까지 wifi에서만 테스트를 했었는데 lte로 하니 접속이 안되고

Connection to http://서버주소 refuse

Timeline: Activity_idle id:android.os.BinderProxy@4291b340 time:493356258

이라고 로그캣에 뜨더라구요....

제가 구현한 로직으로 lte나 3g일때 로그인할때 그렇게 시간이 많이 걸릴까요?

왜 그런지 혹시 아시면 도움좀 주세요

익명사용자 님이 2014년 4월 30일 질문

1개의 답변

0 추천
서버 주소가 공인 ip 인가요?
aucd29 (218,390 포인트) 님이 2014년 4월 30일 답변
제 데스크탑에 서버 설치해서 하고 있습니다. 그 ip이구요
공유기 쓰시겠네요?.....
네... 그러면 느린가요?
음 ... 네트웍에 대한 이해부터가 우선 필요해 보이구요
공유기면 사설 아이피라 lte 망에서는 안되는게 정상입니다

테스트가 필요하면 모뎀과 서버를 직접 연결한 뒤
해당 아이피로 접속하세요
답변 감사합니다~ 네트워크에 대해 좀 공부하고 해봐야겠네요~!!
...