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));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值