zoukankan      html  css  js  c++  java
  • selenium.Cookie 转 okhttp3.Cookie

    package org.rx.util;
    
    import lombok.SneakyThrows;
    import okhttp3.HttpUrl;
    import org.openqa.selenium.Cookie;
    import org.rx.core.NQuery;
    import org.rx.socks.http.HttpClient;
    
    import java.util.Date;
    import java.util.Set;
    
    import static org.rx.core.Contract.require;
    
    public class CookieExtend {
        public static void saveFromResponse(String url, Set<Cookie> cookieSet) {
            require(url, cookieSet);
    
            HttpClient.CookieContainer.getCookieJar().saveFromResponse(HttpUrl.get(url), NQuery.of(cookieSet).select(p -> {
                String domain = p.getDomain();
                if (domain.startsWith(".")) {
                    domain = domain.substring(1);
                }
                okhttp3.Cookie.Builder builder = new okhttp3.Cookie.Builder().name(p.getName()).value(p.getValue())
                        .domain(domain)
                        .path(p.getPath());
                if (p.getExpiry() != null) {
                    builder = builder.expiresAt(p.getExpiry().getTime());
                }
                if (p.isSecure()) {
                    builder = builder.secure();
                }
                if (p.isHttpOnly()) {
                    builder = builder.httpOnly();
                }
                return fill(builder.build(), p.getDomain());
            }).toList());
        }
    
        @SneakyThrows
        private static okhttp3.Cookie fill(okhttp3.Cookie cookie, String domain) {
    //        Field field = Cookie.class.getDeclaredField("domain");
    //        field.setAccessible(true);
    //        field.set(cookie, domain);
            return cookie;
        }
    
        public static Set<org.openqa.selenium.Cookie> loadForRequest(String url) {
            require(url);
    
            return NQuery.of(HttpClient.CookieContainer.getCookieJar().loadForRequest(HttpUrl.get(url)))
                    .select(p -> new org.openqa.selenium.Cookie(p.name(), p.value(), p.domain(), p.path(), new Date(p.expiresAt()), p.secure(), p.httpOnly())).toSet();
        }
    }
    HttpServletRequest request = getCurrentRequest();
    if (request == null) {
    return supplier.invoke(key);
    }
    v = request.getAttribute(k);
    if (v == null) {
    request.setAttribute(k, v = supplier.invoke(k));
    }
  • 相关阅读:
    011. Python中*args, **kwargs 和 pass 和self 解释
    010. windows10下安装kivy 1.9.1版
    013. MVC5过滤器
    制作ubuntu16.04 自动安装iso镜像 二
    Nexus安装
    使用docker-compose 大杀器来部署服务 上
    Docker-Compose入门
    nvidia-docker命令详解
    安装使用NVIDIA-Docker-- 可使用GPU的Docker容器
    frp实现内网穿透
  • 原文地址:https://www.cnblogs.com/Googler/p/12007916.html
Copyright © 2011-2022 走看看