类org.springframework.http.HttpCookie源码实例Demo

下面列出了怎么用org.springframework.http.HttpCookie的API类实例代码及写法,或者点击链接到github查看源代码。

@Override
public String getCookie(final ClientHttpRequest request) {
    if (request != null && request.getCookies() != null) {
        final StringBuilder sb = new StringBuilder();
        for (Map.Entry<String, List<HttpCookie>> entry : request.getCookies().entrySet()) {
            boolean repeated = false;
            for (HttpCookie httpCookie : entry.getValue()) {
                if (repeated) {
                    sb.append(',');
                }
                sb.append(httpCookie.getName());
                sb.append('=');
                sb.append(httpCookie.getValue());
                repeated = true;
            }
        }
        if (isDebug) {
            logger.debug("Cookie={}", sb.toString());
        }
        return sb.toString();
    }
    return null;
}
 
@Override
protected MultiValueMap<String, HttpCookie> initCookies() {
	MultiValueMap<String, HttpCookie> httpCookies = new LinkedMultiValueMap<>();
	Cookie[] cookies;
	synchronized (this.cookieLock) {
		cookies = this.request.getCookies();
	}
	if (cookies != null) {
		for (Cookie cookie : cookies) {
			String name = cookie.getName();
			HttpCookie httpCookie = new HttpCookie(name, cookie.getValue());
			httpCookies.add(name, httpCookie);
		}
	}
	return httpCookies;
}
 
源代码3 项目: spring-analysis-note   文件: MockServerRequest.java
private MockServerRequest(HttpMethod method, URI uri, String contextPath, MockHeaders headers,
		MultiValueMap<String, HttpCookie> cookies, @Nullable Object body,
		Map<String, Object> attributes, MultiValueMap<String, String> queryParams,
		Map<String, String> pathVariables, @Nullable WebSession session, @Nullable Principal principal,
		@Nullable InetSocketAddress remoteAddress, List<HttpMessageReader<?>> messageReaders,
		@Nullable ServerWebExchange exchange) {

	this.method = method;
	this.uri = uri;
	this.pathContainer = RequestPath.parse(uri, contextPath);
	this.headers = headers;
	this.cookies = cookies;
	this.body = body;
	this.attributes = attributes;
	this.queryParams = queryParams;
	this.pathVariables = pathVariables;
	this.session = session;
	this.principal = principal;
	this.remoteAddress = remoteAddress;
	this.messageReaders = messageReaders;
	this.exchange = exchange;
}
 
源代码4 项目: armeria   文件: ArmeriaServerHttpRequestTest.java
@Test
void getCookies() {
    final HttpRequest httpRequest = HttpRequest.of(RequestHeaders.builder(HttpMethod.POST, "/")
                                                                 .scheme("http")
                                                                 .authority("127.0.0.1")
                                                                 .add(HttpHeaderNames.COOKIE, "a=1;b=2")
                                                                 .build());
    final ServiceRequestContext ctx = newRequestContext(httpRequest);
    final ArmeriaServerHttpRequest req = request(ctx);

    // Check cached.
    final MultiValueMap<String, HttpCookie> cookie1 = req.getCookies();
    final MultiValueMap<String, HttpCookie> cookie2 = req.getCookies();
    assertThat(cookie1 == cookie2).isTrue();

    assertThat(cookie1.get("a")).containsExactly(new HttpCookie("a", "1"));
    assertThat(cookie1.get("b")).containsExactly(new HttpCookie("b", "2"));
}
 
源代码5 项目: jhipster   文件: CookieCsrfFilterTest.java
@Test
public void cookieNotSetIfTokenInRequest() {
    WebFilterChain filterChain = (filterExchange) -> {
        try {
            assertThat(filterExchange.getResponse().getCookies().getFirst(CSRF_COOKIE_NAME)).isNull();
        } catch (AssertionError ex) {
            return Mono.error(ex);
        }
        return Mono.empty();
    };
    MockServerWebExchange exchange = MockServerWebExchange.from(
        MockServerHttpRequest
            .post(TEST_URL)
            .cookie(new HttpCookie(CSRF_COOKIE_NAME, "csrf_token"))
    );
    exchange.getAttributes().put(CsrfToken.class.getName(), Mono.just(new DefaultCsrfToken(CSRF_COOKIE_NAME, "_csrf", "some token")));
    this.filter.filter(exchange, filterChain).block();
}
 
@Override
public Predicate<ServerWebExchange> apply(Config config) {
    
    return (ServerWebExchange t) -> {
        List<HttpCookie> cookies = t.getRequest()
          .getCookies()
          .get(config.getCustomerIdCookie());
          
        boolean isGolden; 
        if ( cookies == null || cookies.isEmpty()) {
            isGolden = false;
        }
        else {                
            String customerId = cookies.get(0).getValue();                
            isGolden = goldenCustomerService.isGoldenCustomer(customerId);
        }
          
        return config.isGolden()?isGolden:!isGolden;           
    };
}
 
@Override
protected MultiValueMap<String, HttpCookie> initCookies() {
	MultiValueMap<String, HttpCookie> httpCookies = new LinkedMultiValueMap<>();
	Cookie[] cookies;
	synchronized (this.cookieLock) {
		cookies = this.request.getCookies();
	}
	if (cookies != null) {
		for (Cookie cookie : cookies) {
			String name = cookie.getName();
			HttpCookie httpCookie = new HttpCookie(name, cookie.getValue());
			httpCookies.add(name, httpCookie);
		}
	}
	return httpCookies;
}
 
@Override
public Mono<Void> writeTo(ClientHttpRequest request, ExchangeStrategies strategies) {
	HttpHeaders requestHeaders = request.getHeaders();
	if (!this.headers.isEmpty()) {
		this.headers.entrySet().stream()
				.filter(entry -> !requestHeaders.containsKey(entry.getKey()))
				.forEach(entry -> requestHeaders
						.put(entry.getKey(), entry.getValue()));
	}

	MultiValueMap<String, HttpCookie> requestCookies = request.getCookies();
	if (!this.cookies.isEmpty()) {
		this.cookies.forEach((name, values) -> values.forEach(value -> {
			HttpCookie cookie = new HttpCookie(name, value);
			requestCookies.add(name, cookie);
		}));
	}

	return this.body.insert(request, new BodyInserter.Context() {
		@Override
		public List<HttpMessageWriter<?>> messageWriters() {
			return strategies.messageWriters();
		}
		@Override
		public Optional<ServerHttpRequest> serverRequest() {
			return Optional.empty();
		}
		@Override
		public Map<String, Object> hints() {
			return Hints.from(Hints.LOG_PREFIX_HINT, logPrefix());
		}
	});
}
 
@Override
public ServerRequest.Builder cookie(String name, String... values) {
	for (String value : values) {
		this.cookies.add(name, new HttpCookie(name, value));
	}
	return this;
}
 
源代码10 项目: vertx-spring-boot   文件: CookieConverter.java
private static ResponseCookie toResponseCookie(java.net.HttpCookie cookie) {
    return ResponseCookie.from(cookie.getName(), cookie.getValue())
        .domain(cookie.getDomain())
        .httpOnly(cookie.isHttpOnly())
        .maxAge(cookie.getMaxAge())
        .path(cookie.getPath())
        .secure(cookie.getSecure())
        .build();
}
 
public BuiltServerHttpRequest(String id, String method, URI uri, HttpHeaders headers,
		MultiValueMap<String, HttpCookie> cookies, Flux<DataBuffer> body) {

	this.id = id;
	this.method = method;
	this.uri = uri;
	this.path = RequestPath.parse(uri, null);
	this.headers = HttpHeaders.readOnlyHttpHeaders(headers);
	this.cookies = unmodifiableCopy(cookies);
	this.queryParams = parseQueryParams(uri);
	this.body = body;
}
 
@Override
protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange) {
	HttpCookie cookie = exchange.getRequest().getCookies().getFirst(name);
	Class<?> paramType = parameter.getNestedParameterType();
	if (HttpCookie.class.isAssignableFrom(paramType)) {
		return cookie;
	}
	return (cookie != null ? cookie.getValue() : null);
}
 
@Test
public void cookies() {
	HttpCookie cookie = new HttpCookie("foo", "bar");
	MockServerWebExchange exchange = MockServerWebExchange.from(
			MockServerHttpRequest.method(HttpMethod.GET, "https://example.com").cookie(cookie));

	DefaultServerRequest request = new DefaultServerRequest(exchange, messageReaders);

	MultiValueMap<String, HttpCookie> expected = new LinkedMultiValueMap<>();
	expected.add("foo", cookie);

	assertEquals(expected, request.cookies());

}
 
@Test
public void resolveCookieStringArgument() {
	HttpCookie cookie = new HttpCookie("name", "foo");
	MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/").cookie(cookie));

	Mono<Object> mono = this.resolver.resolveArgument(
			this.cookieStringParameter, this.bindingContext, exchange);

	assertEquals("Invalid result", cookie.getValue(), mono.block());
}
 
@SuppressWarnings("unused")
public void params(
		@CookieValue("name") HttpCookie cookie,
		@CookieValue(name = "name", defaultValue = "bar") String cookieString,
		String stringParam,
		@CookieValue Mono<String> monoCookie) {
}
 
@Override
public List<String> resolveSessionIds(ServerWebExchange exchange) {
	MultiValueMap<String, HttpCookie> cookieMap = exchange.getRequest().getCookies();
	List<HttpCookie> cookies = cookieMap.get(getCookieName());
	if (cookies == null) {
		return Collections.emptyList();
	}
	return cookies.stream().map(HttpCookie::getValue).collect(Collectors.toList());
}
 
源代码17 项目: armeria   文件: ArmeriaClientHttpRequest.java
@Override
protected void applyCookies() {
    final List<String> cookieValues = getCookies().values().stream()
                                                  .flatMap(Collection::stream)
                                                  .map(HttpCookie::toString)
                                                  .collect(toImmutableList());
    if (!cookieValues.isEmpty()) {
        headers.add(HttpHeaderNames.COOKIE, cookieValues);
    }
}
 
@Override
public MultiValueMap<String, HttpCookie> getCookies() {
	if (State.COMMITTED.equals(this.state.get())) {
		return CollectionUtils.unmodifiableMultiValueMap(this.cookies);
	}
	return this.cookies;
}
 
@Override
protected MultiValueMap<String, HttpCookie> initCookies() {
	MultiValueMap<String, HttpCookie> cookies = new LinkedMultiValueMap<>();
	for (CharSequence name : this.request.cookies().keySet()) {
		for (Cookie cookie : this.request.cookies().get(name)) {
			HttpCookie httpCookie = new HttpCookie(name.toString(), cookie.value());
			cookies.add(name.toString(), httpCookie);
		}
	}
	return cookies;
}
 
public MutatedServerHttpRequest(URI uri, @Nullable String contextPath,
		HttpHeaders headers, String methodValue, MultiValueMap<String, HttpCookie> cookies,
		@Nullable SslInfo sslInfo, Flux<DataBuffer> body, ServerHttpRequest originalRequest) {

	super(uri, contextPath, headers);
	this.methodValue = methodValue;
	this.cookies = cookies;
	this.remoteAddress = originalRequest.getRemoteAddress();
	this.sslInfo = sslInfo != null ? sslInfo : originalRequest.getSslInfo();
	this.body = body;
	this.originalRequest = originalRequest;
}
 
@Override
protected MultiValueMap<String, HttpCookie> initCookies() {
	MultiValueMap<String, HttpCookie> cookies = new LinkedMultiValueMap<>();
	for (String name : this.exchange.getRequestCookies().keySet()) {
		Cookie cookie = this.exchange.getRequestCookies().get(name);
		HttpCookie httpCookie = new HttpCookie(name, cookie.getValue());
		cookies.add(name, httpCookie);
	}
	return cookies;
}
 
@Override
public MultiValueMap<String, HttpCookie> getCookies() {
	if (this.cookies == null) {
		this.cookies = CollectionUtils.unmodifiableMultiValueMap(initCookies());
	}
	return this.cookies;
}
 
private MockServerHttpRequest(HttpMethod httpMethod, URI uri, @Nullable String contextPath,
		HttpHeaders headers, MultiValueMap<String, HttpCookie> cookies,
		@Nullable InetSocketAddress remoteAddress, @Nullable SslInfo sslInfo,
		Publisher<? extends DataBuffer> body) {

	super(uri, contextPath, headers);
	this.httpMethod = httpMethod;
	this.cookies = cookies;
	this.remoteAddress = remoteAddress;
	this.sslInfo = sslInfo;
	this.body = Flux.from(body);
}
 
@SuppressWarnings("unchecked")
@Test
public void basicTest() throws Exception {
	URI url = new URI("http://localhost:" + port);
	String header = "SID=31d4d96e407aad42; lang=en-US";
	ResponseEntity<Void> response = new RestTemplate().exchange(
			RequestEntity.get(url).header("Cookie", header).build(), Void.class);

	Map<String, List<HttpCookie>> requestCookies = this.cookieHandler.requestCookies;
	assertEquals(2, requestCookies.size());

	List<HttpCookie> list = requestCookies.get("SID");
	assertEquals(1, list.size());
	assertEquals("31d4d96e407aad42", list.iterator().next().getValue());

	list = requestCookies.get("lang");
	assertEquals(1, list.size());
	assertEquals("en-US", list.iterator().next().getValue());

	List<String> headerValues = response.getHeaders().get("Set-Cookie");
	assertEquals(2, headerValues.size());

	assertThat(splitCookie(headerValues.get(0)), containsInAnyOrder(equalTo("SID=31d4d96e407aad42"),
			equalToIgnoringCase("Path=/"), equalToIgnoringCase("Secure"), equalToIgnoringCase("HttpOnly")));

	assertThat(splitCookie(headerValues.get(1)), containsInAnyOrder(equalTo("lang=en-US"),
			equalToIgnoringCase("Path=/"), equalToIgnoringCase("Domain=example.com")));
}
 
private ServerHttpRequest adaptRequest(MockClientHttpRequest request, Publisher<DataBuffer> body) {
	HttpMethod method = request.getMethod();
	URI uri = request.getURI();
	HttpHeaders headers = request.getHeaders();
	MultiValueMap<String, HttpCookie> cookies = request.getCookies();
	return MockServerHttpRequest.method(method, uri).headers(headers).cookies(cookies).body(body);
}
 
private MockServerHttpRequest(HttpMethod httpMethod, URI uri, @Nullable String contextPath,
		HttpHeaders headers, MultiValueMap<String, HttpCookie> cookies,
		@Nullable InetSocketAddress remoteAddress, @Nullable SslInfo sslInfo,
		Publisher<? extends DataBuffer> body) {

	super(uri, contextPath, headers);
	this.httpMethod = httpMethod;
	this.cookies = cookies;
	this.remoteAddress = remoteAddress;
	this.sslInfo = sslInfo;
	this.body = Flux.from(body);
}
 
private ServerHttpRequest adaptRequest(MockClientHttpRequest request, Publisher<DataBuffer> body) {
	HttpMethod method = request.getMethod();
	URI uri = request.getURI();
	HttpHeaders headers = request.getHeaders();
	MultiValueMap<String, HttpCookie> cookies = request.getCookies();
	return MockServerHttpRequest.method(method, uri).headers(headers).cookies(cookies).body(body);
}
 
@Test
public void okOneCookieForYou() {
	MockServerHttpRequest request = MockServerHttpRequest.get("https://example.com")
			.cookie(new HttpCookie("yourcookie", "sugar"),
					new HttpCookie("mycookie", "chip"))
			.build();
	MockServerWebExchange exchange = MockServerWebExchange.from(request);

	Predicate<ServerWebExchange> predicate = new CookieRoutePredicateFactory()
			.apply(new Config().setName("mycookie").setRegexp("ch.p"));

	assertThat(predicate.test(exchange)).isTrue();
}
 
@SuppressWarnings("unchecked")
@Test
public void basicTest() throws Exception {
	URI url = new URI("http://localhost:" + port);
	String header = "SID=31d4d96e407aad42; lang=en-US";
	ResponseEntity<Void> response = new RestTemplate().exchange(
			RequestEntity.get(url).header("Cookie", header).build(), Void.class);

	Map<String, List<HttpCookie>> requestCookies = this.cookieHandler.requestCookies;
	assertEquals(2, requestCookies.size());

	List<HttpCookie> list = requestCookies.get("SID");
	assertEquals(1, list.size());
	assertEquals("31d4d96e407aad42", list.iterator().next().getValue());

	list = requestCookies.get("lang");
	assertEquals(1, list.size());
	assertEquals("en-US", list.iterator().next().getValue());

	List<String> headerValues = response.getHeaders().get("Set-Cookie");
	assertEquals(2, headerValues.size());

	assertThat(splitCookie(headerValues.get(0)), containsInAnyOrder(equalTo("SID=31d4d96e407aad42"),
			equalToIgnoringCase("Path=/"), equalToIgnoringCase("Secure"), equalToIgnoringCase("HttpOnly")));

	assertThat(splitCookie(headerValues.get(1)), containsInAnyOrder(equalTo("lang=en-US"),
			equalToIgnoringCase("Path=/"), equalToIgnoringCase("Domain=example.com")));
}
 
源代码30 项目: vertx-spring-boot   文件: VertxServerHttpRequest.java
@Override
protected MultiValueMap<String, HttpCookie> initCookies() {
    MultiValueMap<String, HttpCookie> cookies = new LinkedMultiValueMap<>();

    context.cookieMap()
        .values()
        .stream()
        .map(CookieConverter::toHttpCookie)
        .forEach(cookie -> cookies.add(cookie.getName(), cookie));

    return cookies;
}
 
 类所在包
 类方法
 同包方法