相关疑难解决方法(0)

将Cookie从HttpURLConnection(java.net.CookieManager)传递到WebView(android.webkit.CookieManager)

我已经看到了关于它应该如何与旧版本一起工作的答案,DefaultHttpClient 但是没有一个很好的例子HttpURLConnection

我正在使用HttpURLConnectionWeb应用程序发出请求.在我的Android应用程序开始时,我使用CookieHandler.setDefault(new CookieManager())自动处理会话cookie,这工作正常.

在登录后的某个时刻,我想用Web应用程序向用户显示实时页面WebView而不是在后台下载数据HttpURLConnection.但是,我想使用我之前建立的相同会话来防止用户再次登录.

如何复制饼干从java.net.CookieManager使用HttpURLConnectionandroid.webkit.CookieManager使用的WebView,所以我可以共享会话?

cookies android httpurlconnection single-sign-on android-webview

30
推荐指数
3
解决办法
4万
查看次数

维护HttpUrlConnection调用之间的会话(本机/ Webview)

让我从我想要的开始:

我想制作一个应用程序part native and part webviews.

问题 - 维护本机和Webview部件之间的会话.

处理这个的方法:

我打算实现一个本机登录,在其中我向用户提供两个EditTextboxes和一个按钮,用户输入凭据,我将它们作为JSON发布到服务器.

服务器响应成功或错误.基于Success标志,我读取了此连接的标头值并解压缩SessionCookie:

switch (responseCode) {
                case 200:

                    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    String inputLine;
                    response = new StringBuffer();
                    while ((inputLine = in.readLine()) != null) {
                        response.append(inputLine);
                    }
                    in.close();

                   //IF SUCCESS

                    Map<String, List<String>> map = conn.getHeaderFields();

                    for (Map.Entry<String, List<String>> entry : map.entrySet()) {
                        System.out.println("Key : " + entry.getKey() + " ,Value : " + entry.getValue());
                    }

                    SSID = map.get("Set-Cookie").toString();
                    SSID = SSID.substring(1,SSID.length()-1);
                    return response.toString(); …
Run Code Online (Sandbox Code Playgroud)

php java session android httpurlconnection

17
推荐指数
1
解决办法
1万
查看次数

`$ cookies.put()`需要30秒才能在Android上的磁盘上保存cookie

语境:

  • 我们有一个加载在线网站的cordova应用程序.(我们基本上使用cordova作为插件)
  • 我们使用存储cookie $cookies.put()
  • 它在桌面浏览器和iOS上运行良好(只要我们在cookie上使用过期)

问题:

在Android上,如果用户在$cookies.put()调用30秒后终止应用程序,则cookie将在下次重新启动时消失.

如果用户等待超过30秒(如35秒或更长时间),一切正常.

题:

我们如何强制立即保存cookie(或至少更快)?

笔记:

cookies android angularjs cordova

9
推荐指数
1
解决办法
395
查看次数

CookieManager-如何管理异步方法-removeSessionCookies

我需要将一个具有本机登录屏幕的应用程序与在 webview (混合应用程序)内运行的应用程序的其余部分集成。这听起来像是一种常见的方法,但我在将会话数据(cookie)从本机代码传输到 webview 时遇到问题,我认为这与 CookieManager 的异步行为有关。

有时,在某些设备上,cookie 要么被删除,要么不应用。据我所知,这可能是因为removeSessionCookie、setCookie 和sync 在它们自己的线程中异步运行。我不太理解来自其他编程语言的 Java 中的这一点,因为似乎没有任何钩子可以知道任务何时完成 EG 回调、事件、asyc/await 等。

那么问题是如何知道 Android/Java 中的异步任务何时完成?我遇到过同步块语法,但它看起来不会等待诸如removeSessionCookie之类的事情完成。

我的代码看起来有点像这样:

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie(); // problem
CookieSyncManager.getInstance().sync(); // maybe problem

List<Cookie> cookies = httpClient.getCookieStore().getCookies();
for (int i = 0; i < cookies.size(); i++) {
    Cookie cookie = cookies.get(i);
    String cookieString = cookie.getName() + "=" + cookie.getValue();
    cookieManager.setCookie(url, cookieString);
}
CookieSyncManager.getInstance().sync();
Run Code Online (Sandbox Code Playgroud)

cookies android asynchronous webview

2
推荐指数
1
解决办法
2412
查看次数