繁体   English   中英

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

[英]How to get httponly cookies from a Java client?

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

您可以使用在Java Cookie处理中引用的java.net.CookieHandler

作为直接从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 )。

请任何人给我榜样

这是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);
}

OUTPUT

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

暂无
暂无

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

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