下面列出了org.apache.http.message.BufferedHeader#org.apache.http.message.BasicHeaderElement 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Test
public void createCookieForHeaderElementTest() {
String cookiePath = "/client/api";
String paramName = "paramName1";
String paramValue = "paramVale1";
NameValuePair[] parameters = new NameValuePair[1];
parameters[0] = new BasicNameValuePair(paramName, paramValue);
String headerName = "headerElementName";
String headerValue = "headerElementValue";
HeaderElement headerElement = new BasicHeaderElement(headerName, headerValue, parameters);
Mockito.doNothing().when(apacheCloudStackClient).configureDomainForCookie(Mockito.any(BasicClientCookie.class));
BasicClientCookie cookieForHeaderElement = apacheCloudStackClient.createCookieForHeaderElement(headerElement);
Assert.assertNotNull(cookieForHeaderElement);
Assert.assertEquals(headerName, cookieForHeaderElement.getName());
Assert.assertEquals(headerValue, cookieForHeaderElement.getValue());
Assert.assertEquals(paramValue, cookieForHeaderElement.getAttribute(paramName));
Assert.assertEquals(cookiePath, cookieForHeaderElement.getPath());
Mockito.verify(apacheCloudStackClient).configureDomainForCookie(Mockito.eq(cookieForHeaderElement));
}
@Override
public List<Header> formatCookies(final List<Cookie> cookies) {
Collections.sort(cookies, COOKIE_COMPARATOR);
final CharArrayBuffer buffer = new CharArrayBuffer(20 * cookies.size());
buffer.append(SM.COOKIE);
buffer.append(": ");
for (int i = 0; i < cookies.size(); i++) {
final Cookie cookie = cookies.get(i);
if (i > 0) {
buffer.append("; ");
}
final String cookieName = cookie.getName();
final String cookieValue = cookie.getValue();
if (cookie.getVersion() > 0 && !isQuoteEnclosed(cookieValue)) {
HtmlUnitBrowserCompatCookieHeaderValueFormatter.INSTANCE.formatHeaderElement(
buffer,
new BasicHeaderElement(cookieName, cookieValue),
false);
}
else {
// Netscape style cookies do not support quoted values
buffer.append(cookieName);
buffer.append("=");
if (cookieValue != null) {
buffer.append(cookieValue);
}
}
}
final List<Header> headers = new ArrayList<>(1);
headers.add(new BufferedHeader(buffer));
return headers;
}
/**
* Utility method to transform a Cookie into a Set-Cookie Header.
*
* @param cookie
* the {@link Cookie} to format
*
* @return the value of the Set-Cookie header
*/
public static String encodeCookie(Cookie cookie) {
int maxAge = -1;
if (cookie.getExpiryDate() != null) {
maxAge = (int) ((cookie.getExpiryDate().getTime() - System.currentTimeMillis()) / ONE_SECOND);
// According to Cookie class specification, a negative value
// would be considered as no value. That is not what we want!
if (maxAge < 0) {
maxAge = 0;
}
}
String cookieName = cookie.getName();
String cookieValue = cookie.getValue();
StringBuilder buffer = new StringBuilder();
// Copied from org.apache.http.impl.cookie.BrowserCompatSpec.formatCookies(List<Cookie>)
if (cookie.getVersion() > 0 && !isQuoteEnclosed(cookieValue)) {
buffer.append(BasicHeaderValueFormatter.INSTANCE.formatHeaderElement(null,
new BasicHeaderElement(cookieName, cookieValue), false).toString());
} else {
// Netscape style cookies do not support quoted values
buffer.append(cookieName);
buffer.append("=");
if (cookieValue != null) {
buffer.append(cookieValue);
}
}
// End copy
appendAttribute(buffer, "Comment", cookie.getComment());
appendAttribute(buffer, "Domain", cookie.getDomain());
appendAttribute(buffer, "Max-Age", maxAge);
appendAttribute(buffer, "Path", cookie.getPath());
if (cookie.isSecure()) {
appendAttribute(buffer, "Secure");
}
if (((BasicClientCookie) cookie).containsAttribute(HTTP_ONLY_ATTR)) {
appendAttribute(buffer, "HttpOnly");
}
appendAttribute(buffer, "Version", cookie.getVersion());
return (buffer.toString());
}