为什么这个应用程序给我“不幸的是,你的应用已停止”?

时间:2013-06-10 12:26:21

标签: php android login

这是我的登录系统代码,但PHP文件似乎没有登录。我想首先解决主要问题,然后我将修改PHP文件以从数据库中获取用户。

login.java:

public class login extends Activity implements OnClickListener {

private EditText usernameEditText;
private EditText passwordEditText;
private Button sendPostReqButton;
private Button clearButton;

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);

    usernameEditText = (EditText) findViewById(R.id.username);
    passwordEditText = (EditText) findViewById(R.id.password);

    sendPostReqButton = (Button) findViewById(R.id.login);
    sendPostReqButton.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    if(v.getId() == R.id.login){
        String givenUsername = usernameEditText.getEditableText().toString();
        String givenPassword = passwordEditText.getEditableText().toString();

        System.out.println("Given username :" + givenUsername + " Given password :" + givenPassword);

        sendPostRequest(givenUsername, givenPassword);
    }   
}

private void sendPostRequest(String givenUsername, String givenPassword) {

    class SendPostReqAsyncTask extends AsyncTask<String, Void, String>{

        @Override
        protected String doInBackground(String... params) {

            String paramUsername = params[0];
            String paramPassword = params[1];

            System.out.println("*** doInBackground ** paramUsername " + paramUsername + " paramPassword :" + paramPassword);

            HttpClient httpClient = new DefaultHttpClient();


            HttpPost httpPost = new HttpPost("http://www.nirmana.lk/hec/android/postLogin.php");

            BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("paramUsername", paramUsername);
            BasicNameValuePair passwordBasicNameValuePAir = new BasicNameValuePair("paramPassword", paramPassword);


            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
            nameValuePairList.add(usernameBasicNameValuePair);
            nameValuePairList.add(passwordBasicNameValuePAir);

            try {

                UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);

                // setEntity() hands the entity (here it is urlEncodedFormEntity) to the request.
                httpPost.setEntity(urlEncodedFormEntity);

                try {
                    HttpResponse httpResponse = httpClient.execute(httpPost);



                    InputStream inputStream = httpResponse.getEntity().getContent();

                    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                    StringBuilder stringBuilder = new StringBuilder();

                    String bufferedStrChunk = null;

                    while((bufferedStrChunk = bufferedReader.readLine()) != null){
                        stringBuilder.append(bufferedStrChunk);
                    }

                    return stringBuilder.toString();

                } catch (ClientProtocolException cpe) {
                    System.out.println("First Exception caz of HttpResponese :" + cpe);
                    cpe.printStackTrace();
                } catch (IOException ioe) {
                    System.out.println("Second Exception caz of HttpResponse :" + ioe);
                    ioe.printStackTrace();
                }

            } catch (UnsupportedEncodingException uee) {
                System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
                uee.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            if(result.equals("working")){
                Toast.makeText(getApplicationContext(), "HTTP POST is working...", Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(getApplicationContext(), "Invalid POST req...", Toast.LENGTH_LONG).show();
            }
        }           
    }

    SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
    sendPostReqAsyncTask.execute(givenUsername, givenPassword);     
}

}

PHP文件:

   <?php

   $varUsername = $_POST['paramUsername'];
   $varPassword = $_POST['paramPassword'];

   if($varUsername == "anuja" && $varPassword == "123"){
echo 'working';
   }else{
echo 'invalid';
    }

   ?>

我不知道它为什么停止了?

1 个答案:

答案 0 :(得分:1)

您可以将值传递给doInbackground(param)或asynctask的构造函数。

加载asynctask

将值传递给构造函数

new SendPostReqAsyncTask(givenUsername, givenPassword).execute();  

检查http://developer.android.com/reference/android/os/AsyncTask.html。检查线程规则下的主题。

您可以删除方法sendPostRequest(givenUsername, givenPassword)并制作活动的asynctask内部类。

@Override
public void onClick(View v) {
        switch(v.getId())
        {
        case R.id.login:

        String givenUsername = usernameEditText.getEditableText().toString();
        String givenPassword = passwordEditText.getEditableText().toString();

        System.out.println("Given username :" + givenUsername + " Given password :" + givenPassword);

        new SendPostReqAsyncTask(givenUsername, givenPassword).execute(); 
         break;
         }

    }
    class SendPostReqAsyncTask extends AsyncTask<String, Void, String>{

      String paramUsername;
      String paramPassword ;

      public SendPostReqAsyncTask(String name,String password)
       {
                paramUsername = name;
                paramPassword = password;
       }
       .... 
     } 

或者

new SendPostReqAsyncTask().execute(givenUsername, givenPassword);   

AsycTask

class SendPostReqAsyncTask extends AsyncTask<String,Void,String>
{

    String paramUsername;
    String paramPassword ;

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params) {
        paramUsername = params[0];
        paramPassword = params[1]; 
        .... 
        return "something";
    }

}

编辑:

public class MainActivity extends Activity implements OnClickListener {

private EditText usernameEditText;
private EditText passwordEditText;
private Button sendPostReqButton;
private Button clearButton;

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

   usernameEditText = (EditText) findViewById(R.id.editText1);
   passwordEditText = (EditText) findViewById(R.id.editText2);

   sendPostReqButton = (Button) findViewById(R.id.button1);
   sendPostReqButton.setOnClickListener(this);

}

@Override
public void onClick(View v) {
      switch(v.getId())
      {
      case R.id.button1:
       String givenUsername = usernameEditText.getEditableText().toString();
       String givenPassword = passwordEditText.getEditableText().toString();
       System.out.println("Given username :" + givenUsername + " Given password :" + givenPassword);
       new SendPostReqAsyncTask().execute(givenUsername, givenPassword); 
       break;  
      }
   }   


   class SendPostReqAsyncTask extends AsyncTask<String, Void, String>{

       @Override
       protected String doInBackground(String... params) {

           String paramUsername = params[0];
           String paramPassword = params[1];

           System.out.println("*** doInBackground ** paramUsername " + paramUsername + " paramPassword :" + paramPassword);

           HttpClient httpClient = new DefaultHttpClient();
           HttpPost httpPost = new HttpPost("http://www.nirmana.lk/hec/android/postLogin.php");
           BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("paramUsername", paramUsername);
           BasicNameValuePair passwordBasicNameValuePAir = new BasicNameValuePair("paramPassword", paramPassword);
           List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
           nameValuePairList.add(usernameBasicNameValuePair);
           nameValuePairList.add(passwordBasicNameValuePAir);

           try {

               UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);

               // setEntity() hands the entity (here it is urlEncodedFormEntity) to the request.
               httpPost.setEntity(urlEncodedFormEntity);

               try {
                   HttpResponse httpResponse = httpClient.execute(httpPost);
                   InputStream inputStream = httpResponse.getEntity().getContent();
                   InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                   BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                   StringBuilder stringBuilder = new StringBuilder();
                   String bufferedStrChunk = null;

                   while((bufferedStrChunk = bufferedReader.readLine()) != null){
                       stringBuilder.append(bufferedStrChunk);
                   }

                   return stringBuilder.toString();

               } catch (ClientProtocolException cpe) {
                   System.out.println("First Exception caz of HttpResponese :" + cpe);
                   cpe.printStackTrace();
               } catch (IOException ioe) {
                   System.out.println("Second Exception caz of HttpResponse :" + ioe);
                   ioe.printStackTrace();
               }

           } catch (UnsupportedEncodingException uee) {
               System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
               uee.printStackTrace();
           }

           return null;
       }

       @Override
       protected void onPostExecute(String result) {
           super.onPostExecute(result);

           if(result.equals("working")){
               Toast.makeText(getApplicationContext(), "HTTP POST is working...", 10000).show();
           }else{
               Toast.makeText(getApplicationContext(), "Invalid POST req...", 10000).show();
           }
       }           
   } 
}

activity_main.mxl

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
     >



    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

快照

enter image description here