Страница 1 из 1

Авторизированное http соединение (coockies)

Добавлено: 16 дек 2013, 16:54
sanu0074
Здравствуйте, на сервере авторизация проверяется так:
- проверяется есть ли куки (login & pass)
- если есть присваивается статус "авторизованный" и more actions..
- если нет то присваивается статус "гость" и more actions..

Суть в том что к скриптам обслуживающим android-приложение будет доступ только для авторизованного пользователя, поэтому при каждом запросе клиент должен посылать куки серверу. Данные для кук хранятся в Preferences.

Как реализовать такое http соединение? p.s. можно использовать и сессии вместо кук. перегуглил много чего, узнал про defaultHttpClient, но конкретно понять ничего не могу, хотелось бы как можно больше деталей, я новичок и кроме простых get запросов и дальнейшим разбором полученных от сервера xml ничего не делал, помогите плиз разобраться) благодарен за внимание!

Re: Авторизированное http соединение (coockies)

Добавлено: 16 дек 2013, 17:26
altwin
если честно не понятно где вы искали и каким боком тут defaultHttpClient...(можете показать, что набирали в поиске??)
по сути -

Код: Выделить всё

 httpclient.addHeader("Cookie", cookieValue)
, наиболее простой путь, т.е. просто послать хедер с кукой.

Или вот посмотрите пример - http://svn.apache.org/viewvc/httpcompon ... iew=markup

Но вообще я бы советовал почитать тут -http://www.codeproject.com/Articles/310 ... of-Cookies

Или простой пример функции утилиты:

Код: Выделить всё

public static BasicCookieStore getCookieStore(String cookies, String domain) {
    String[] cookieValues = cookies.split(";");
    BasicCookieStore cs = new BasicCookieStore();

    BasicClientCookie cookie;
    for (int i = 0; i < cookieValues.length; i++) {
        String[] split = cookieValues[i].split("=");
        if (split.length == 2)
            cookie = new BasicClientCookie(split[0], split[1]);
        else
            cookie = new BasicClientCookie(split[0], null);

        cookie.setDomain(domain);
        cs.addCookie(cookie);
    }
    return cs;
}

 String cookies = CookieManager.getInstance().getCookie(url);
 BasicCookieStore lCS = getCookieStore(cookies, MyApp.sDomain);

 HttpContext localContext = new BasicHttpContext();
 DefaultHttpClient httpclient = new DefaultHttpClient();
 httpclient.setCookieStore(lCS);
 localContext.setAttribute(ClientContext.COOKIE_STORE, lCS);
P.S. Возможно более кошерно использовать - http://developer.android.com/reference/ ... mmary.html,
а вообще мне кажется гугл знает ответ лучше меня - http://goo.gl/NA5ylV