下面列出了怎么用org.apache.http.cookie.ClientCookie的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
void testGetCookiesAsHttpCookieStore()
{
configureMockedWebDriver();
Cookie seleniumCookie = createSeleniumCookie();
mockGetCookies(seleniumCookie);
CookieStore cookieStore = cookieManager.getCookiesAsHttpCookieStore();
List<org.apache.http.cookie.Cookie> resultCookies = cookieStore.getCookies();
assertEquals(1, resultCookies.size());
org.apache.http.cookie.Cookie httpCookie = resultCookies.get(0);
assertThat(httpCookie, instanceOf(BasicClientCookie.class));
BasicClientCookie clientCookie = (BasicClientCookie) httpCookie;
assertAll(
() -> assertEquals(seleniumCookie.getDomain(), clientCookie.getDomain()),
() -> assertEquals(seleniumCookie.getExpiry(), clientCookie.getExpiryDate()),
() -> assertEquals(seleniumCookie.getName(), clientCookie.getName()),
() -> assertEquals(seleniumCookie.getPath(), clientCookie.getPath()),
() -> assertEquals(seleniumCookie.getValue(), clientCookie.getValue()),
() -> assertEquals(seleniumCookie.isSecure(), clientCookie.isSecure()),
() -> assertEquals(seleniumCookie.getDomain(), clientCookie.getAttribute(ClientCookie.DOMAIN_ATTR)),
() -> assertEquals(seleniumCookie.getPath(), clientCookie.getAttribute(ClientCookie.PATH_ATTR))
);
}
private void addCookiesToStore(List<Cookie> cookies, CookieStore cookieStore, String domain) {
for (Cookie cookie : cookies) {
BasicClientCookie apacheCookie = new BasicClientCookie(cookie.name, cookie.value);
apacheCookie.setAttribute(ClientCookie.DOMAIN_ATTR, "true");
if (cookie.domain != null) {
apacheCookie.setDomain(cookie.domain);
} else {
apacheCookie.setDomain(domain);
}
if (cookie.expiry != null) {
apacheCookie.setExpiryDate(cookie.expiry);
}
if (cookie.path != null) {
apacheCookie.setPath(cookie.path);
}
apacheCookie.setSecure(cookie.secure);
cookieStore.addCookie(apacheCookie);
}
}
/**
* Converts Selenium cookie to Apache http client.
* @param browserCookie selenium cookie.
* @return http client format.
*/
protected ClientCookie convertCookie(Cookie browserCookie) {
BasicClientCookie cookie = new BasicClientCookie(browserCookie.getName(), browserCookie.getValue());
String domain = browserCookie.getDomain();
if (domain != null && domain.startsWith(".")) {
// http client does not like domains starting with '.', it always removes it when it receives them
domain = domain.substring(1);
}
cookie.setDomain(domain);
cookie.setPath(browserCookie.getPath());
cookie.setExpiryDate(browserCookie.getExpiry());
cookie.setSecure(browserCookie.isSecure());
if (browserCookie.isHttpOnly()) {
cookie.setAttribute("httponly", "");
}
return cookie;
}
private static org.apache.http.cookie.Cookie createHttpClientCookie(Cookie seleniumCookie)
{
BasicClientCookie httpClientCookie = new BasicClientCookie(seleniumCookie.getName(), seleniumCookie.getValue());
httpClientCookie.setDomain(seleniumCookie.getDomain());
httpClientCookie.setPath(seleniumCookie.getPath());
httpClientCookie.setExpiryDate(seleniumCookie.getExpiry());
httpClientCookie.setSecure(seleniumCookie.isSecure());
httpClientCookie.setAttribute(ClientCookie.DOMAIN_ATTR, seleniumCookie.getDomain());
httpClientCookie.setAttribute(ClientCookie.PATH_ATTR, seleniumCookie.getPath());
return httpClientCookie;
}
/**
* Converts the specified array of HttpClient cookies into a list of cookies.
* @param cookies the cookies to be converted
* @return the specified HttpClient cookies, as cookies
*/
public static List<Cookie> fromHttpClient(final List<org.apache.http.cookie.Cookie> cookies) {
final List<Cookie> list = new ArrayList<>(cookies.size());
for (final org.apache.http.cookie.Cookie c : cookies) {
list.add(new Cookie((ClientCookie) c));
}
return list;
}
/**
* Converts Selenium cookies to Apache http client ones.
* @param browserCookies cookies in Selenium format.
* @param cookieStore store to place coverted cookies in.
*/
public void copySeleniumCookies(Set<Cookie> browserCookies, CookieStore cookieStore) {
for (Cookie browserCookie : browserCookies) {
ClientCookie cookie = convertCookie(browserCookie);
cookieStore.addCookie(cookie);
}
}
@Override
public String getAttributeName() {
return ClientCookie.VERSION_ATTR;
}
/**
* {@inheritDoc}
*/
@Override
public synchronized void addCookie(final Cookie cookie) {
manager_.addCookie(new com.gargoylesoftware.htmlunit.util.Cookie((ClientCookie) cookie));
}
public PortAwareCookieSpec(String patterns[]) {
super(patterns);
super.registerAttribHandler(ClientCookie.DOMAIN_ATTR, new PortAwareDomainHandler());
}
/**
* Creates a new HtmlUnit cookie from the HttpClient cookie provided.
* @param clientCookie the HttpClient cookie
*/
public Cookie(final ClientCookie clientCookie) {
httpClientCookie_ = clientCookie;
}