Android: имя пользователя и пароль для входа с помощью httppost - PullRequest
0 голосов
/ 17 февраля 2012

Я использую eclipse и некоторое время пытался войти в систему, используя http-запрос и скрипт php для подключения к стороне сервера.

Проблема в том, что когда я нажимаю кнопку входа, ничего не происходит, мойПредположим, есть проблема с OnClikListener или данные для текстового поля не были отправлены на сервер

Вот мой код.

public class LogInActivity extends Activity implements OnClickListener
{

Button ok,back,exit;
TextView result;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    ok = (Button)findViewById(R.id.btn_login);

    ok.setOnClickListener(LogInActivity.this);

    result = (TextView)findViewById(R.id.lbl_result);

}

public void postLoginData() {

    HttpClient httpclient = new DefaultHttpClient();


    HttpPost httppost = new HttpPost("http://10.0.2.2/androidRegistration/login.php");

    try {

        EditText uname = (EditText)findViewById(R.id.txt_username);
        String username = uname.getText().toString();

        EditText pword = (EditText)findViewById(R.id.txt_password);
        String password = pword.getText().toString();

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", username));
        nameValuePairs.add(new BasicNameValuePair("password", password));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        Log.w("LogInActivity", "Execute HTTP Post Request");
        HttpResponse response = httpclient.execute(httppost);

        String str = inputStreamToString(response.getEntity().getContent()).toString();
        Log.w("LogInActivity", str);

        if(str.toString().equalsIgnoreCase("true"))
        {
            Log.w("LogInActivity", "TRUE");
            result.setText("Login successful");   
        }else
        {
            Log.w("LogInActivity", "FALSE");
            result.setText(str);                
        }

    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
} 

private StringBuilder inputStreamToString(InputStream is) {
    String line = "";
    StringBuilder total = new StringBuilder();

    BufferedReader rd = new BufferedReader(new InputStreamReader(is));

    try {
        while ((line = rd.readLine()) != null) { 
            total.append(line); 
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    return total;
}

@Override
public void onClick(View view) {
    if(view == ok){
        postLoginData();
    }
}     

}

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Подумайте об использовании операторов Log.d(TAG, message) для отладки вашего кода.Журналы можно увидеть, используя adb logcat или eclipse DDMS.Это должно сказать вам поток вашего кода.Вы также можете отлаживать, используя точки останова в eclipse.

Кроме того, не выполняйте сетевой ввод-вывод в основном цикле.Это очень плохо для пользователей.Попробуйте использовать AsyncTask

0 голосов
/ 17 февраля 2012

Вы должны выполнить отладку, чтобы проверить, связана ли проблема с onClick или с транспортом HTTP.Внутри onClick я бы лично не проверял вид как у вас.Не уверен, работает ли он или нет, но я обычно использую:

if(null != view)switch(view.getId()){
    case R.id.btn_login: postLoginData();break;
}

Вы должны попытаться определить, где проблема, чтобы было понятно, что нужно исправить.Я бы посоветовал вам добавить Log.d сразу после входа в onClick, чтобы увидеть, вызывается ли прослушиватель при нажатии на экран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...