如何获取会话令牌表单网址?

时间:2014-11-12 12:23:33

标签: java

让我们说.. 如果我用https://www.google.com点击谷歌,它会创建一个会话,为响应它

会创建会话tokn的url ..

https://www.google.co.in/?gfe_rd=cr&ei=oFBjVJSvLqnM8gft5YDwAQ&gws_rd=ssl

我的问题是 我用代码连接谷歌:

网址url =新网址(测试); URLConnection conn = url.openConnection();

这将连接到谷歌。 对于这个谷歌创建一个会话。

然后我如何将会话令牌返回到我的代码?

2 个答案:

答案 0 :(得分:1)

您可以从浏览器的cookie中获取会话令牌。您可以找到Cookie设置 - >高级设置 - >隐私 - >内容设置 - > allcookie和网站数据,然后搜索www.google.com并选择sid并复制内容。

答案 1 :(得分:0)

您可以使用以下方法提取任何cookie,而不仅仅是包含会话的cookie:

由于服务器可能在一个请求中设置多个cookie,我们需要遍历响应头,查找名为" Set-Cookie"的所有头。

String headerName=null;
for (int i=1; (headerName = uc.getHeaderFieldKey(i))!=null; i++) {
    if (headerName.equals("Set-Cookie")) {                  
    String cookie = urlConn.getHeaderField(i);

getHeaderField(int index)方法返回的字符串是一系列由分号(;)分隔的name = value。第一个名称/值配对是我们感兴趣的实际数据字符串(即" sessionId = 0949eeee22222rtg"),后续的名称/值配对是我们用来管理cookie存储的元信息(当它到期时等。)。

    cookie = cookie.substring(0, cookie.indexOf(";"));
    String cookieName = cookie.substring(0, cookie.indexOf("="));
    String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length());

基本上就是这样。我们现在有cookie名称(cookieName)和cookie值(cookieValue)。

以上说明基于http://www.hccp.org/java-net-cookie-how-to.html#retrieving_cookies

中提供的示例

更复杂的方法是使用CookieAccessor类:

public void getCookieUsingCookieHandler() { 
    try {       
        // Instantiate CookieManager;
        // make sure to set CookiePolicy
        CookieManager manager = new CookieManager();
        manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
        CookieHandler.setDefault(manager);

        // get content from URLConnection;
        // cookies are set by web site
        URL url = new URL("http://host.example.com");
        URLConnection connection = url.openConnection();
        connection.getContent();

        // get cookies from underlying
        // CookieStore
        CookieStore cookieJar =  manager.getCookieStore();
        List <HttpCookie> cookies =
            cookieJar.getCookies();
        for (HttpCookie cookie: cookies) {
          System.out.println("CookieHandler retrieved cookie: " + cookie);
        }
    } catch(Exception e) {
        System.out.println("Unable to get cookie using CookieHandler");
        e.printStackTrace();
    }
}  

在您遵循的任何方法中,您需要知道持有会话ID的cookie的名称,以便您可以从中获取值。例如,java Web应用程序通常会创建一个名为&#34; JSESSIOINID&#34;

的cookie