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));
    }
  • 相关阅读:
    Asp.Net MVC 路由
    Http 请求处理流程
    Http Module 介绍
    彻底屏蔽鼠标右键、另存为、查看源文件
    使用TransactionScope实现单数据库连接事务操作
    Asp.Net MVC(创建一个任务列表应用程序) Part.1
    Http Handler 介绍
    jQuery.API源码深入剖析以及应用实现(1) - 核心函数篇
    安装MSSQL2008出现的问题记录
    SQL – 8.Union
  • 原文地址:https://www.cnblogs.com/Googler/p/12007916.html
Copyright © 2011-2022 走看看