You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jsoup中以字符串而非Map<String,String>类型传递Cookie值?

实现方法

要将从开发者控制台获取的Cookie字符串传入Jsoup,你需要先把字符串解析成Jsoup要求的Map<String, String>类型,再传递给.cookies()方法,具体操作如下:

1. 编写Cookie字符串解析工具方法

自己实现一个简单的解析逻辑,把Cookie字符串拆分成标准的键值对Map:

public static Map<String, String> parseCookieString(String cookieStr) {
    Map<String, String> cookieMap = new HashMap<>();
    if (cookieStr == null || cookieStr.isEmpty()) {
        return cookieMap;
    }
    // 按分号分割每个Cookie键值对,处理前后空格
    String[] cookiePairs = cookieStr.split(";");
    for (String pair : cookiePairs) {
        // 分割键和值,限制只分割第一个等号,避免值中包含等号的情况
        String[] keyValue = pair.trim().split("=", 2);
        if (keyValue.length == 2) {
            cookieMap.put(keyValue[0].trim(), keyValue[1].trim());
        }
    }
    return cookieMap;
}

2. 在Jsoup请求中使用解析后的Map

将从控制台复制的Cookie字符串传入工具方法转成Map,再传入Jsoup请求:

// 从开发者控制台复制的Cookie字符串
String cookieStr = "currency=INR; magnitude=LC; ad=3d468...";
Map<String, String> cookieMap = parseCookieString(cookieStr);

// 发起Jsoup请求,同时传入Referer头
Document doc = Jsoup.connect("https://www.valueresearchonline.com/funds/26123/motilal-oswal-flexi-cap-fund-regular-plan/")
        .cookies(cookieMap)
        .header("Referer", "https://www.valueresearchonline.com/funds/26123/motilal-oswal-flexi-cap-fund-regular-plan/")
        .get();

补充说明

  • 使用split("=", 2)是为了兼容Cookie值中包含等号的场景,确保只分割键和值之间的第一个等号。
  • 全程用trim()处理空格,避免Cookie键或值带多余空格导致识别失败。

内容的提问来源于stack exchange,提问作者vikramvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:50:40