как установить sessionID в заголовке запроса с помощью Android 2.2 - PullRequest
0 голосов
/ 31 января 2012

Я занимаюсь разработкой приложения с использованием Android 2.2.Я не знаю, как управлять открытым сеансом между сервером и мобильным приложением.У меня есть мобильное приложение с экраном входа, когда пользователь вводит свое имя пользователя и пароль. Я отправляю его на сервер (страница php), используя следующий код:

    httpMethod = new HttpPost(Constants.IOGIN_URL);
        httpMethod.setHeader("Accept", "text/html");
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", userID));
        nameValuePairs.add(new BasicNameValuePair("password", pass));
        httpMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        httpClient = new DefaultHttpClient();
        HttpResponse response = httpClient.execute(httpMethod);
        HttpEntity input = response.getEntity();

Когда сервер получает эти данные, он создаетсеанс для этого пользователя и отправить обратно код успеха.Я хочу знать, как прочитать идентификатор сеанса для заголовка ответа и как установить его для каждого следующего заголовка запроса.

1 Ответ

1 голос
/ 31 января 2012

Я думаю, что это приведет вас к сути.Вам нужно будет захватить файлы cookie и включить их в свой HTTP-запрос.

Получить файлы cookie из запроса на вход в систему:

HttpClient httpclient = new DefaultHttpClient();
    try {
        // Create a local instance of cookie store
        CookieStore cookieStore = new BasicCookieStore();

        // Create local HTTP context
        HttpContext localContext = new BasicHttpContext();
        // Bind custom cookie store to the local context
        localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

        HttpGet httpget = new HttpGet("http://www.yourpage/");

        System.out.println("executing request " + httpget.getURI());

        // Pass local context as a parameter
        HttpResponse response = httpclient.execute(httpget, localContext);
        HttpEntity entity = response.getEntity();

        System.out.println("----------------------------------------");
        System.out.println(response.getStatusLine());
        if (entity != null) {
            System.out.println("Response content length: " + entity.getContentLength());
        }
        List<Cookie> cookies = cookieStore.getCookies();
        for (int i = 0; i < cookies.size(); i++) {
            System.out.println("Local cookie: " + cookies.get(i));
        }

        // Consume response content
        EntityUtils.consume(entity);

        System.out.println("----------------------------------------");

    } finally {
        // When HttpClient instance is no longer needed,
        // shut down the connection manager to ensure
        // immediate deallocation of all system resources
        httpclient.getConnectionManager().shutdown();
    }

Затем передать их как локальный контекст:

HttpPost httppost = new HttpPost("http://www.yourpage/");

// Pass local context as a parameter     
HttpResponse response = httpclient.execute(httppost, localContext); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...