2013-10-26 3 views
0

То, что я знаю, я делаю это НЕПРАВИЛЬНО; Я не знаю, как это сделать правильно. Вот небольшой код для сервлета Apache.Cookies от Apache до Android App

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
response.setContentType("application/Cookie");// May be wrong 
Cookie c = new Cookie("cookie", "CookieS i LOVE"); 
c.setMaxAge(60*60);response.addCookie(c); 
     } 
For Android app i have this code to get the cookie sent from the that servlet. 
Now i want to store that cookie on my android device. and then retrieve it for 
another activities. 



{....} 
    public void onClick(View v) { 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet("http://********:8080/***/servlet"); 
    Cookie c = (Cookie) CookiePolicy.ACCEPT_ALL; 
    try { 
    HttpResponse execute = client.execute(httpget); 
    } catch (ClientProtocolException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    List<Cookie> cookies = ((AbstractHttpClient)client).getCookieStore() 
    .getCookies();   
    String mycookie = cookies.toString(); 
    Toast.makeText(Cookies.this, mycookie, Toast.LENGTH_SHORT).show(); 
    } 
    } 
    }   
    Thank You for your help.     
+0

', а затем восстановить его на другой activities' означает то же приложение, различных видов деятельности или различных applicaitons? –

+0

Да, это вход в систему, поэтому первый экран предназначен для регистрации, а остальные экраны предназначены для деловых целей. –

ответ

0

Использование SharedPreferences для хранения печенья:

private SharedPreferences.Editor mEditor = null; 
private SharedPreferences pref = null; 

... 
mEditor = PreferenceManager.getDefaultSharedPreferences(this).edit(); 

... 

mCookies = httpclient.getCookieStore().getCookies(); 

if (mCookies.isEmpty()) { 
    Log.d("test_runner", "Cookies: None"); 
} 
else { 
for (int i = 0; i < mCookies.size(); i++) { 
    mEditor.putString("Cookies_" + i, mCookies.get(i).toString()); 
} 
    mEditor.commit(); 
} 

И сейчас в другой деятельности, называют их люблю:

pref = PreferenceManager.getDefaultSharedPreferences(this); 

String cookies =pref.getString("Cookies_0", ""); 

.... 

В качестве примечания

Я бы использовал библиотеку Gson для преобразования списка Cookies в строку и сохранил в настройках только одно значение, представляющее все файлы cookie.

После, на выписку, конвертирование с Gson назад от строки к списку

+0

Спасибо Максим Шустин, Что если я хочу использовать CookieStore для хранения этих файлов cookie и получить их от CookieManager, возможно ли это. –

+0

Если вы используете одно и то же приложение, вы можете использовать экземпляр 'CookieManager'. Но помните, что после закрытия операции все данные сброса. Таким образом, вы можете ввести в Сервис, чтобы он работал в фоновом режиме или использовал мой путь. –

Смежные вопросы