2014-09-06 45 views
0

我想在android中创建一个简单的登录界面,但是当我尝试运行连接时发生了错误。我不知道,为什么会发生这种情况?Android中的登录界面给出错误

这里是我的代码:

public class MainActivity extends Activity{ 

    String username,password; 

    HttpClient httpclient; 
    HttpPost httppost; 
    HttpResponse response; 
    HttpEntity httpentity; 
    ArrayList<NameValuePair> namevaluepairs; 


    EditText etUser,etPass; 
    Button bLogin; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     etUser=(EditText) findViewById(R.id.etUser); 
     etPass=(EditText) findViewById(R.id.etPass); 

     bLogin=(Button) findViewById(R.id.bSubmit); 
     bLogin.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       httpclient=new DefaultHttpClient(); 
       httppost=new HttpPost("http://192.168.1.107/php_project/checking.php"); 

       username=etUser.getText().toString(); 
       password=etPass.getText().toString(); 

       try { 

        namevaluepairs=new ArrayList<NameValuePair>(); 

        namevaluepairs.add(new BasicNameValuePair(username, username)); 
        namevaluepairs.add(new BasicNameValuePair("password", password)); 

        httppost.setEntity(new UrlEncodedFormEntity(namevaluepairs)); 
        response=httpclient.execute(httppost); 
        if(response.getStatusLine().getStatusCode()==200){ 

         httpentity=response.getEntity(); 

         if(httpentity!=null){ 
          InputStream inputstream=httpentity.getContent(); 

          JSONObject jsonResponse=new JSONObject(convertStreamToString(inputstream)); 

          String retUser=jsonResponse.getString("user"); 
          String retPass=jsonResponse.getString("pass"); 

          if(username.equals(retUser) && password.equals(retPass)){ 
           SharedPreferences sp=getSharedPreferences("logindetails", 0); 
           SharedPreferences.Editor spedit=sp.edit(); 

           spedit.putString("user", username); 
           spedit.putString("pass", password); 

           spedit.commit(); 

           Toast.makeText(getApplicationContext(), "SUCCESS !", Toast.LENGTH_LONG).show(); 
          }else{ 
           Toast.makeText(getApplicationContext(), "Inavalid Login details", Toast.LENGTH_LONG).show(); 
          } 
         } 

        } 
       } catch (Exception e) { 
        e.printStackTrace(); 

        Toast.makeText(getApplicationContext(), "Connection error", Toast.LENGTH_LONG).show(); 
       }     
      } 
     }); 


    } 

    private static String convertStreamToString(InputStream is){ 

     BufferedReader reader=new BufferedReader(new InputStreamReader(is)); 
     StringBuilder sb=new StringBuilder(); 

     String line=null; 

     try { 
      while((line=reader.readLine())!=null){ 
       sb.append(line + "\n"); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }finally{ 
      try { 
       is.close(); 
      } catch (IOException e2) { 
       e2.printStackTrace(); 
      } 
     } 
     return sb.toString(); 


    } 
} 

任何一个可以帮助我解决这个问题.. 当我在模拟器中运行它,它给我敬酒消息,即“连接错误” ...

我简直不明白,为什么我不能让它成为登录... ???

+0

发表您的logcat – 2014-09-06 09:10:11

+0

logcat的:5月9日至6日:35:48.794:W/System.err的(1564):android.os.NetworkOnMainThreadException 5月9日至6日:35:48.804 :W/System.err(1564):\t at android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145) – 2014-09-06 09:39:03

+0

使用无法在UI线程中执行与互联网相关的任务.. 使用AsynTask进行调用PHP页面http:///developer.android.com/reference/android/os/AsyncTask.html – 2014-09-06 12:56:05

回答

0

请问这样的问题时,请添加什么logcat。

看着IP我的猜测是你想使用10.0.2.2。

在这里阅读更多:http://developer.android.com/tools/devices/emulator.html#emulatornetworking

+0

Logcat ----- 09-06 05:35:48.794:W/System.err(1564):android。 os.NetworkOnMainThreadException 09-06 05:35:48.804:W/System.err(1564):\t at android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145) – 2014-09-06 09:41:18

+0

因此,您需要在单独的线程中执行网络请求。检查这个答案:http://stackoverflow.com/questions/3505930/make-an-http-request-with-android – Heinrisch 2014-09-06 11:24:45

+0

谢谢,得到了基本的想法... – 2014-09-06 13:38:12

1
Check whether you have given Network Connection permission in manifest. 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

我已经授予这些权限 – 2014-09-06 09:25:34