RestTemplate转发带上cookie

1、先获取cookie,转成List

public static List<String> getCookieList(HttpServletRequest request) {
    List<String> cookieList = new ArrayList<>();
    
    Cookie[] cookies = request.getCookies();
    if (cookies == null || cookies.length == 0) {
        return cookieList;
    }

    for (Cookie cookie : cookies) {
        cookieList.add(cookie.getName() + "=" + cookie.getValue());
    }
    
    return cookieList;
}

2、将cookieList写入Header

String url = Config.BASE_URL + "/userlevel?inviterId=" + invit1;
String restInfo = MessageFormat.format("url:{0}, inviterId:{1}", url, invit1);
UtilFunctions.log.info("UserController#register call rest api info, " + restInfo);

HttpHeaders requestHeaders = new HttpHeaders();
List<String> cookieList = UtilFunctions.getCookieList(request);
requestHeaders.put("Cookie", cookieList);
HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders);
restTemplate.exchange(url, HttpMethod.GET, requestEntity, JSONObject.class).getBody();
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用 RestTemplate 获取 Cookie,可以使用以下步骤: 1. 创建一个 HttpClient 对象,可以通过 HttpClientBuilder 创建,设置 Cookie 策略为 StandardCookiePolicy。 2. 创建一个 HttpComponentsClientHttpRequestFactory 对象,并将 HttpClient 对象设置为它的 HttpClient 属性。 3. 创建一个 RestTemplate 对象,并将 HttpComponentsClientHttpRequestFactory 对象设置为它的 RequestFactory 属性。 4. 发送一个 GET 或 POST 请求,如果服务端返回了 Cookie,可以从 HttpHeaders 对象中获取 Cookie。 以下是代码示例: ``` HttpClient httpClient = HttpClientBuilder.create() .setDefaultCookieStore(new BasicCookieStore()) .setCookieSpecs(new DefaultCookieSpecProvider(StandardCookiePolicy.STRICT)) .build(); HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); RestTemplate restTemplate = new RestTemplate(requestFactory); // 发送 GET 请求 ResponseEntity<String> response = restTemplate.getForEntity(url, String.class); // 获取 Cookie HttpHeaders headers = response.getHeaders(); List<String> cookies = headers.get(HttpHeaders.SET_COOKIE); if (cookies != null) { for (String cookie : cookies) { // 解析 Cookie Cookie parsedCookie = Cookie.parse(url, cookie); // 获取 Cookie 的值 String cookieValue = parsedCookie.getValue(); System.out.println(cookieValue); } } ``` 注意:此方法只能获取服务端返回的 Cookie,无法设置 Cookie,如果需要设置 Cookie,可以使用 Apache HttpComponents 库或者其他第三方库。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值