2013-10-26 53 views
0

我知道的是我在做它錯誤;我不知道怎麼做纔對。 以下是Apache servlet的一些代碼。從Apache到Android應用程序的Cookie

@覆蓋

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存儲cookie:

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

謝謝Maxim Shoustin,如果我想使用CookieStore來存儲這些cookie並通過CookieManager獲取它們,這是可能的。 –

+0

如果您使用相同的應用程序,當然可以使用CookieManager的實例。但在活動結束後請記住,所有信息都重置。所以你可以投入服務,使其在後臺運行或使用我的方式。 –

相關問題