PHP войти на Android с cookie - PullRequest
       16

PHP войти на Android с cookie

0 голосов
/ 09 июля 2011

Мне нужны некоторые указатели здесь.Итак, в основном я создал форму для входа на веб-сервер.Итак, из кода ответа я могу получить код состояния 200 через Wireshark.Обычный путь к этой системе входа в браузер:

пароль + идентификатор> index.php> (если истина)> index2.php, но в приложении для Android, очевидно, он не перенаправляет, хотя я не уверенесли его допустим?Я пытался использовать Jsoup.connect (URL) .cookie (sessionid, который я не знаю почему, всегда нулевой) .get ();но так как он всегда нулевой, он не сработает.Если заголовок cookie правильный, то это «PHPSESSID = somenumiericavalue» или я смотрю на проволочную акцию неправильно?и еще одна вещь, как я уже сказал, я пытался использовать метод Jsoup.connect, а также HttpURLConnection также, следуя Вопросы о входе в Android HTTP , но когда дело доходит до части, где мне нужно проверить заголовок и значение IЯ потерян :(.

if(response.getStatusLine().getStatusCode() == 200){
                        HttpEntity entity = response.getEntity();
                        Log.d("login", "success!");
                        if(entity != null){
                         cookies = client.getCookieStore();

Я заблудился здесь, когда Помп велел сделать еще кое-что. Абсолют потерян здесь. Другая часть - это следующая часть, где он использует wireshark. Потеря тоже.: (

1 Ответ

0 голосов
/ 11 июля 2011

Как правило, cookie должен обрабатываться HttpClient: вам просто нужно использовать тот же экземпляр HttpClient, чтобы войти в систему, который вы используете для своих реальных запросов, и cookie должен поддерживаться для всех запросов. В качестве примера, это конкретная последовательность входа в систему, которую я использую: в моем случае я использую перенаправление Location в качестве символа успеха, но вместо этого вы можете использовать строку состояния 200 OK. Если это возвращает true, то в хранилище cookie в экземпляре HttpClient session есть соответствующий cookie, и я могу получить доступ к любым защищенным URL-адресам.

public synchronized boolean login() throws Exception
    {
    HttpGet httpget;
    HttpPost httpost = new HttpPost(base + "auth/login");
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    nvps.add(new BasicNameValuePair("username", this.username));
    nvps.add(new BasicNameValuePair("password", this.password));
    httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    HttpResponse r = session.execute(httpost);

    // verify it succeeded
    HttpEntity entity = r.getEntity();
    Header lhdr = r.getFirstHeader("Location");
    if (lhdr != null) {
        // failed
        System.err.println("Login request failed:");
        if (entity != null && entity.getContentEncoding() != null) {
        dump("Login Request",
             new InputStreamReader(entity.getContent(), entity
                       .getContentEncoding().getValue()));
        }
        return false;
    }
    if (entity != null) entity.consumeContent();    
    return true;
    }
...