如何从Java客户端获取httponly cookie?

时间:2016-03-06 22:43:54

标签: java http cookies

如何获取httponly cookies?我应该使用什么工具org.apache.http或jsoup,可能是url连接...请有人给我举个例子。我尝试使用jsoup获取cookie,但jsoup没有返回httponly cookie。 感谢!!!

2 个答案:

答案 0 :(得分:0)

您可以使用java.net.CookieHandler,引用于:Java Cookie Handling

直接从http://www.hccp.org/java-net-cookie-how-to.html

获取的示例
  

从回复中检索Cookie:

打开java.net.URLConnection到服务器:

URL myUrl = new URL("http://www.hccp.org/cookieTest.jsp");
URLConnection urlConn = myUrl.openConnection();
urlConn.connect();

遍历响应标头寻找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);               
    ...                                                      

从Cookie字符串中提取Cookie名称和值: getHeaderField(int index)方法返回的字符串是一系列由分号(;)分隔的name = value。第一个名称/值配对是我们感兴趣的实际数据字符串(即" sessionId = 0949eeee22222rtg"或" userId = igbrown"),后续的名称/值配对是元信息我们将用它来管理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)。

答案 1 :(得分:0)

  

请有人给我举个例子

这是Jsoup的一个。

示例代码

Response response;
try {
    response = Jsoup //
            .connect("https://httpbin.org/cookies/set?http-only-cookie=test;%20httponly") //
            .ignoreContentType(true) //
            .execute();

    System.out.println(response.cookies());
} catch (IOException e) {
    throw new RuntimeException(e);
}

输出

{http-only-cookie="test\073 httponly"}