【问题标题】:Get Session from Android Webview从 Android Webview 获取会话
【发布时间】:2015-10-17 11:20:15
【问题描述】:

我创建了一个 Android 应用程序,我想从 webview 获取 Session。

如何实现?

谢谢。

【问题讨论】:

  • 发布你到目前为止所尝试的;你试过 CookieManager.getInstance() 吗?
  • @AhmadAlsanie,尝试了这种方法,但它提供了 cookie 数据,我将我的项目存储在 Session 中,那么如何在 webview 中获取会话数据?
  • 你需要它来登录吗?
  • 不,实际上我的网站是用于在线购物的固定价格商品,并且我在会话中存储购物车,所以对于结帐,我使用 Paypal 网页版,我想为安卓应用程序实现应用内购买,所以我需要 Android 会话中的购物车。
  • 好的,请引导我完成创建会话的过程(您使用 HTTPURLConnection)吗?有关代码的其他详细信息将是有益的

标签: android session webview


【解决方案1】:

我使用这种方法从 webview 获取会话 cookie:

public static String getCookieFromAppCookieManager(String url) throws MalformedURLException {

   CookieManager cookieManager = CookieManager.getInstance();
   if (cookieManager == null)
        return null;
    String rawCookieHeader = null;
    URL parsedURL = new URL(url);
    rawCookieHeader = cookieManager.getCookie(parsedURL.getHost());
    if (rawCookieHeader == null)
        return null;
    return rawCookieHeader;
}

【讨论】:

  • 你知道什么?我在生产代码中使用它。我测试了很多其他方法,比如 XWalkCookieManager 等。也许这个 sn-p 来自 stackoverflow,那又如何? @Kay 你是个纯粹主义者?
  • @Kay 是的,您完全正确,先生。完美主义者。
  • @Decoy,感谢您的回答,这对获取 cookie 有效,但我在会话中存储了一些数据,所以如何获取它。
【解决方案2】:

有两种方式:

  • 如果开发者制作了一个httpclient,并进行了api auth调用并存储了cookie。然后您将 httpclient 的 cookie 与 webview 同步并在本机维护会话。

  • 如果用户使用 webview 进行身份验证调用并且 cookie 驻留在 webview 中。

第一个是您的代码,只需创建一个 getter 将返回 DefaultHTTPClient 的实例。该实例也可以访问 cookie。您可以对 auth api 进行异步调用以在实例中获取正确的 cookie。确保将 HttpClient 和 Webview 保留在 sync 中。

要在第二种方法中检索 cookie,您将使用 CookieManager 对象和用户登录的 url,并且您需要 cookie,例如 twitter.com 请参阅第二篇帖子 here 了解实现细节。

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 2017-05-16
    • 1970-01-01
    • 2011-04-20
    • 2018-05-02
    • 2017-04-06
    • 2012-03-23
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多