相关疑难解决方法(0)

HttpURLConnection(java.net.CookieManager)和WebView(android.webkit.CookieManager)之间的cookie的双向同步

不幸的是,Android上有很多cookie管理器.Cookie HttpURLConnection由以下人员维护,java.net.CookieManagerCookie WebView由以下人员维护android.webkit.CookieManager.这些cookie存储库是独立的,需要手动同步.

我的应用程序使用HttpURLConnections和显示WebViews(它是本机HTML混合).当然,我希望两者共享所有cookie - 所以我将在整个过程中进行透明会话.

进一步来说:

  1. 在HttpURLConnection中设置/更改cookie时,我希望WebViews也能看到此更改.
  2. 在WebView中设置/更改cookie时,我希望下一个HttpURLConnections也能看到此更改.

简单地说 - 我正在寻找双向同步.或者甚至更好,让它们都使用相同的cookie存储库.您可以假设它们同时处于活动状态(如在不同的选项卡上).

问题:

  1. 有没有办法让两个使用相同的cookie存储库?

  2. 如果没有,建议的做法是手动同步?什么时候我应该同步,怎么样?

相关问题:这个问题解决了类似的问题,但只实现了单向同步(HttpURLConnection - > WebView).

我最好的想法:我真的想避免手动同步,所以我试着想如何让两者都使用相同的存储库.也许我可以创建自己的扩展核心处理程序java.net.CookieManager.我将使用它将其设置为核心cookie处理程序java.net.CookieHandler.setDefault().它的实现将是android.webkit.CookieManager处理程序实例的代理(对于我只是访问webkit管理器的每个函数).

cookies android http httpurlconnection android-webview

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

维护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万
查看次数

Android CookieManager setCookie没有设置任何内容

在我的应用程序中,我从HttpGet请求获取两个cookie并将它们存储在CookieManager中,如下所示:

//Clear old cookies
CookieManager.getInstance().removeAllCookie();
CookieSyncManager.getInstance().sync();

//Save the two cookies: auth token and session info
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        String cookieString = cookie.getName() + "=" + cookie.getValue() + "; Domain=" + cookie.getDomain();
        CookieManager.getInstance().setCookie("http://alpha.mydomainname.com", cookieString);
    }

    System.out.println(CookieManager.getInstance().hasCookies()); //Prints false in 2.3,  true in 4.0.3

    CookieSyncManager.getInstance().sync();

    System.out.println(CookieManager.getInstance().hasCookies()); //Also prints false in 2.3 and true in 4.0.3
}
Run Code Online (Sandbox Code Playgroud)

我在两个不同的设备中测试相同的代码,有趣的是,在4.0.3中正确设置了cookie(并且在应用程序的启动之间也是如此),而不是在2.3.3中.当我说它们没有设置时,我的意思是hasCookies()返回false,并且当我提供URL时getCookie()返回null.

我在调用setCookie时尝试了Cookie URL的所有可能组合:"http://alpha.mydomainname.com","http://www.mydomainname.com","http://mydomainname.com"," mydomainname.com","alpha.mydomainname.com",".mydomainname.com","www.mydomainname.com",它们都不起作用.请帮忙.

cookies android

15
推荐指数
3
解决办法
2万
查看次数

OkHTTPClient将cookie传递给Webview

我通过OKHttpClient帖子以用户身份登录,我想与webview共享cookie.

android webview okhttp

5
推荐指数
1
解决办法
5305
查看次数