2017-08-28 41 views
1

在我的Android項目中,我使用舊的apache庫進行網絡操作。在那裏,我使用HttpContext中的BasicCookie()來維護跨HTTPS調用的會話。現在谷歌已經棄用了Apache庫,所以我切換到URLConnection網絡。但我不確定如何在HttpsUrlConnection中設置Cookie來維護跨HTTPS調用的會話。我怎樣才能在HttpURlConnection中設置相同的功能。在Android中通過http調用維護會話

我試過所有這些帖子,但沒有幫助。 How to handle cookies in httpUrlConnection using cookieManager

回答

1

在您的Authentication類中創建一個CookieManager成員對象,以便您可以在稍後檢索並使用您的Cookie時從其他活動訪問它。

//In MyAuthentication class 
static CookieManager mCookieManager = new CookieManager(); 
static String COOKIE_HEADER = "Set-Cookie"; 

//authentication code 
//... 

int responseCode = urlConnection.getResponseCode(); 
if(responseCode == HttpURLConnection.HTTP_OK){     
    Map<String, List<String>> headers = urlConnection.getHeaderFields(); 
    List<String> cookies = headers.get(COOKIE_HEADER); 

    for(String cookie: cookies){ 
     HttpCookie httpCookie = HttpCookie.parse(cookie).get(0); 
     mCookieManager.getCookieStore().add(null, httpCookie); 
    } 
} 

在您希望在您的發佈請求中設置檢索到的cookie的其他Activity中。

CookieManger cookieManager = MyAuthentication.mCookieManager; 

//authentication code 
//... 
if(mCookieManager.getCookieStore().getCookies().size() > 0) { 
    urlConnection.setRequestProperty("Cookie", 
    TextUtils.join(";", mCookieManager.getCookieStore().getCookies())); 
}