0

很抱歉让我感到痛苦,但我已经用这个太久了,我相信这很容易,但我累了,看不到它。一切正常,但“字符串结果”为空

package com.example.me;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.widget.Button;
import android.widget.TextView;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {

    Button btnLoginButton;
    TextView tmpError, tmpUsername, tmpPassword;
    ArrayList<NameValuePair> postParameters;
    String response;

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

        tmpError = (TextView) findViewById(R.id.lblMessage);
        tmpUsername = (TextView) findViewById(R.id.txtUsername);  
        tmpPassword = (TextView) findViewById(R.id.txtPassword);  

        addListenerOnButton();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void addListenerOnButton() {

        btnLoginButton = (Button) findViewById(R.id.btnLogin); 
        btnLoginButton.setOnClickListener(new OnClickListener() {
            public void onClick(View arg) {
                try{
                    triggerClick();
                }
                catch (Exception e) {         
                    tmpError.setText("[]" + e.toString());  
                }
            } 
        });
    }

    private void triggerClick() {  

        postParameters = new ArrayList<NameValuePair>();  
        postParameters.add(new BasicNameValuePair("username", tmpUsername.getText().toString()));  
        postParameters.add(new BasicNameValuePair("password", tmpPassword.getText().toString()));  

        final class HttpTask
                extends
                AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {

            @Override
            protected String doInBackground(String... params) {
                publishProgress(true);
                try {
                response = CustomHttpClient.executeHttpPost("http://some.url/thatiknoworks/check.php", postParameters);
                            return response;
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }    

            }

            @Override
            protected void onPostExecute(String result) {
                publishProgress(false);

                result = result.replaceAll("\\s+","");  

                if(result.equals("1")) { 
                    tmpError.setText("Correct");
                }
                else {  
                    tmpError.setText("Sorry!!("+result+")");
                }
            }

        }       

        new HttpTask().execute();
    }  
}

一次又一次地返回一个空的“结果”字符串:-(

4

3 回答 3

1

因为在doInBackground()您返回空字符串时,您应该这样做:

protected String doInBackground(String... params) {
            publishProgress(true);
            try {
                 return CustomHttpClient.executeHttpPost("http://some.url/thatiknoworks/check.php", postParameters);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return "";
            }    

        }
于 2012-07-18T12:21:07.273 回答
1

字符串结果为空,因为您从doInBackground().

return "";
于 2012-07-18T12:21:29.173 回答
1

请声明String response;为全局变量。

protected String doInBackground(String... params) 
 {
   publishProgress(true);
   try 
   {
   response=CustomHttpClient.executeHttpPost("http://some.url/thatiknoworks/check.php", postParameters);
   return response;
   } 
   catch (Exception e) 
   {
      e.printStackTrace();
   }    
 }
于 2012-07-18T12:30:17.420 回答