2014-01-10 131 views
0

我几乎已经死了,需要帮助。webview和java之间的同步cookie

我的要求: -

我正在开发Android应用程序,并希望使用从web视图饼干(/会话)在我的Java代码。我基本上想在webview中登录后得到其他页面的html,而不是在webview中打开这些页面,而是通过我的java代码。

我试过: -

为此,我试过HttpClientHttpURLConnection指SO许多问题,但失败了。

任何人都可以请给我一个示例代码?

说我有一个哈希曲奇饼干饼干。我如何使用HttpClientHttpURLConnection或其他任何东西来获得其他页面html。该网站我,试图为https:

请给一个示例代码

+0

你是否能够在WebView中通过JavaScript使用session-id读取Cookie?默认情况下,这些会话Cookie在创建服务器端时被标记为“HttpOnly”,因此应该无法通过脚本获取值。尝试在WebView中执行'console.log(document.cookie)'并观看LogCat。你能看到SessionId吗? – hgoebl

+0

@hgoebl我们也可以通过CookieManager.getInstance()。getCookie(“url”) – user

+0

获得httponly cookie所以问题在哪里?采取cookie和[设置标题](http://en.wikipedia.org/wiki/HTTP_cookie#Setting_a_cookie)。 – hgoebl

回答

2

是试试这个:

BufferedReader reader = null; 
try { 
    URL url2 = new URL("url"); 
    URLConnection con = (URLConnection) url2.openConnection(); 
    CookieManager.getInstance().setAcceptCookie(true); 

    con.setRequestProperty("Cookie",CookieManager.getInstance().getCookie("logged in url in webview")); 
    con.setDoOutput(true); 
    con.connect(); 

    reader = new BufferedReader(new InputStreamReader(con.getInputStream())); 
    StringBiffer html; 
    String line = ""; 
    while ((line = reader.readLine()) != null) { 
     html.append(line); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

它为我工作。

+0

伟大的工作... – user

1

您是否尝试过的饼干添加为HTTP标头?我不知道我是否理解你,但你可以考虑这些:

  • Cookies:如果你想加载一些资源(无论是网页,图像,CSS,JS或其他)您正在发出HTTP请求。如果服务器为您的用户保留一个会话,您可能会得到一个会话cookie。 cookie必须随每个请求一起发送到服务器,作为COOKIE头。因此,如果您想将cookie传递给您的请求,请将其添加为标题。 Android为您提供了一个使用CookieManager类的简单方法。你可以参考this
  • SSL:如果您尝试访问安全网站(https),则必须使用SSL证书。 Android为大多数受欢迎的网站(例如Facebook,Google,Twitter等)提供了大量预分配证书。你可以直接使用它们。如果您的SSL证书没有出现,您必须手动添加它。请阅读this了解更多信息。

我希望如果我是对你企图使用您的WebView cookies来获取网站的其他页面中的活动的Java code.if这是有用的:)

相关问题