Android Войти на сайт - всегда возвращает данные страницы входа - PullRequest
0 голосов
/ 31 марта 2012

У меня есть форма для входа, которая в настоящее время принимает параметры входа и входа на веб-сайт с помощью HTTP Post Request.Я не уверен в типе сервера, так что это может быть проблемой.Как только он принимает учетные данные для входа в систему, он охватывает входной поток в строку (все HTML) и устанавливает его в текстовое представление.Вот логин:

private void postLoginData() throws ClientProtocolException, IOException {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("loginurl"); // Changed for question.

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("sid", "username"));
        nameValuePairs.add(new BasicNameValuePair("pin", "pass"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        String finalres = inputStreamToString(response.getEntity().getContent()).toString();
        tvStatus.setText(finalres);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}

А вот inputStreamToString ()

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

    // Wrap a BufferedReader around the InputStream
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));

    // Read response until the end
    while ((line = rd.readLine()) != null) { 
        total.append(line); 
    }

    // Return full string
    return total;
}

Проблема в том, что ВСЕГДА просто возвращает HTML для страницы входа.Когда пользователь не может войти на сайт, у него появляется маленькое сообщение, указывающее на это.Даже если я добавлю неверные учетные данные, ничего не отобразится.Аналогично, если я добавлю правильный логин, он все равно покажет мне только страницу логина HTML.

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Для проверки статуса HTTP. Сделай что-то вроде этого

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
   //Do Something here.. I'm logged in.
} else if (response.getStatusLine().getStatusCode() == HttpStatus.SC_UNAUTHORIZED) {
    // Do Something here. Access Denied.
} else {
    // IF BOTH CASES not found e.g (unknown host and etc.)
}

Это будет работать точно так же, как вы хотите проверить статус. спасибо

1 голос
/ 31 марта 2012

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

...