Php 为什么这个应用程序会给我;不幸的是,您的应用程序已停止";?

Php 为什么这个应用程序会给我;不幸的是,您的应用程序已停止";?,php,android,login,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

这是我的登录系统代码,除了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);     
}
公共类登录扩展活动实现OnClickListener{
私有EditText用户名EditText;
私有EditText密码EditText;
专用按钮sendPostReqButton;
私人按钮clearButton;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
usernameEditText=(EditText)findViewById(R.id.username);
passwordEditText=(EditText)findViewById(R.id.password);
sendPostReqButton=(按钮)findViewById(R.id.login);
sendPostReqButton.setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
if(v.getId()==R.id.login){
字符串givenUsername=usernameEditText.getEditableText().toString();
字符串givenPassword=passwordEditText.getEditableText().toString();
System.out.println(“给定用户名:+givenUsername+”给定密码:+givenPassword);
sendPostRequest(givenUsername、givenPassword);
}   
}
私有void sendPostRequest(字符串givenUsername、字符串givenPassword){
类SendPostReqAsyncTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串paramUsername=params[0];
字符串paramPassword=params[1];
System.out.println(“***doInBackground**paramUsername”+paramUsername+“paramPassword:+paramPassword”);
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://www.nirmana.lk/hec/android/postLogin.php");
BasicNameValuePair用户名BasicNameValuePair=新的BasicNameValuePair(“paramUsername”,paramUsername);
BasicNameValuePair passwordBasicNameValuePAir=新的BasicNameValuePair(“paramPassword”,paramPassword);
List nameValuePairList=新的ArrayList();
nameValuePairList.add(usernameBasicNameValuePair);
nameValuePairList.add(passwordBasicNameValuePAir);
试一试{
UrlEncodedFormEntity UrlEncodedFormEntity=新的UrlEncodedFormEntity(nameValuePairList);
//setEntity()将实体(这里是urlEncodedFormEntity)交给请求。
setEntity(urlEncodedFormEntity);
试一试{
HttpResponse HttpResponse=httpClient.execute(httpPost);
InputStream InputStream=httpResponse.getEntity().getContent();
InputStreamReader InputStreamReader=新的InputStreamReader(inputStream);
BufferedReader BufferedReader=新的BufferedReader(inputStreamReader);
StringBuilder StringBuilder=新的StringBuilder();
字符串bufferedStrChunk=null;
while((bufferedStrChunk=bufferedReader.readLine())!=null){
追加(bufferedStrChunk);
}
返回stringBuilder.toString();
}捕获(客户端协议异常cpe){
System.out.println(“HTTPResponse的第一个例外caz:+cpe”);
printStackTrace();
}捕获(ioe异常ioe){
System.out.println(“HttpResponse的第二个异常caz:+ioe”);
ioe.printStackTrace();
}
}捕获(不支持的编码异常uee){
System.out.println(“由于UrlEncodedFormEntity参数:“+uee”而给出的异常);
uee.printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
如果(结果等于(“工作”)){
Toast.makeText(getApplicationContext(),“HTTP POST正在工作…”,Toast.LENGTH\u LONG.show();
}否则{
Toast.makeText(getApplicationContext(),“无效的POST请求…”,Toast.LENGTH_LONG.show();
}
}           
}
SendPostReqAsyncTask SendPostReqAsyncTask=新建SendPostReqAsyncTask();
sendPostReqAsyncTask.execute(givenUsername,givenPassword);
}
}

PHP文件:

   <?php

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

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

   ?>


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

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

加载异步任务的步骤

将值传递给构造函数

new SendPostReqAsyncTask(givenUsername, givenPassword).execute();  
看看这个。检查线程规则下的主题

您可以删除方法
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;
       }
       .... 
     } 
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";
    }

}
类SendPostReqAsyncTask扩展了AsyncTask
{
字符串参数username;
字符串密码;
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
paramUsername=params[0];
paramPassword=params[1];
.... 
返回“某物”;
}
}
编辑:

public类MainActivity扩展活动实现OnClickListener{
私有EditText用户名EditText;
私有EditText密码EditText;
专用按钮sendPostReqButton;
私人按钮clearButton;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usernameEditText=(EditText)findViewById(R.id.editText1);
passwordEditText=(EditText)findViewById(R.id.editText2);
s
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();
           }
       }           
   } 
}
<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>