简体   繁体   English

如何获取JSESSIONID cookie

[英]how to obtain a JSESSIONID cookie

I have an android client and this is how I am doing a request to my tomcat server: 我有一个android客户端,这就是我向tomcat服务器发送请求的方式:

protected String executeRequest(String url)
{
    BasicHttpParams httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, 10000);

    String output = "", line = "";

    try
    {
        HttpGet getRequest = null;
        DefaultHttpClient httpClient = new DefaultHttpClient();
        try
        {
            getRequest = new HttpGet(url);
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
        getRequest.addHeader("accept", "application/json");

        HttpResponse response = httpClient.execute(getRequest);

        if (response.getStatusLine().getStatusCode() != 200) 
        {
            response.getStatusLine().getStatusCode();
            return null;
        }

        BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));

        while ((line = br.readLine()) != null)
        {
            output += line;
        }

        httpClient.getConnectionManager().shutdown();
    } 
    catch (ClientProtocolException e)
    {
        e.printStackTrace();
        Log.w(TAG, e.getMessage());
    } 
    catch (IllegalStateException e)
    {
        e.printStackTrace();
        Log.w(TAG, e.getMessage());
    } 
    catch (IOException e)
    {
        e.printStackTrace();
        Log.w(TAG, e.getMessage());
    }

    if(output.equals(""))
    {
        output = null;
    }

    return output;
}

Now I want to be able to get the JSESSIONID cookie. 现在,我希望能够获取JSESSIONID cookie。 I understand that I need to provide with a cookie like explained here , but how do I get the jSessionId in the first time? 我明白,我需要提供一个cookie一样解释在这里 ,但我如何得到jSessionId在第一时间?

Thanks! 谢谢!

Ok, here is how I did it. 好的,这就是我的做法。 Don't know if there is any easier way: 不知道有没有更简单的方法:

    HttpResponse response = httpClient.execute(getRequest);
    Header[] headers = response.getHeaders("Set-Cookie");
    for(int i = 0; i < headers.length; i++)
    {
        if(headers[i].getName().equals("Set-Cookie"))
        {
            String pattern1 = "JSESSIONID=";
            String pattern2 = ";";
            Pattern p = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
            Matcher m = p.matcher(headers[i].getValue());
            if(m.find())
            {
                sessionId = m.group(1);
                break;
            }
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM