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

使用clj-http.cookies设置请求Cookie时调用to-basic-client-cookie报空指针异常

解决clj-http中to-basic-client-cookie调用空指针异常的问题

嗨,作为Clojure新手遇到这种问题很正常,咱们来一步步解决它!你碰到的空指针异常,核心原因是**to-basic-client-cookie的参数格式用错了**,它并不接受[cookie-name cookie-val]这样的向量作为输入。

正确的调用方式有两种:

  • 方式一:直接传名称和值两个独立参数
    函数最基础的用法就是把cookie名和cookie值分开作为两个参数传入,而不是打包成向量:

    (clj-http.cookies/to-basic-client-cookie cookie-name cookie-val)
    
  • 方式二:传入带指定键的映射(支持更多配置)
    如果你需要给cookie设置额外属性(比如域名、路径、过期时间等),可以传一个包含:name和:value键的映射,其他可选键按需添加:

    (clj-http.cookies/to-basic-client-cookie 
      {:name cookie-name 
       :value cookie-val
       :domain "example.com"  ; 可选:指定cookie生效的域名
       :path "/"})            ; 可选:指定cookie生效的路径
    

为什么之前的写法会报错?

当你传入一个向量时,函数内部的参数解构逻辑会和预期不符,导致后续处理时找不到需要的属性,最终触发空指针异常。Clojure里很多函数的参数都有明确的结构要求,不是所有键值对都能用向量传递哦。

完整使用示例

这里给你一个把生成的cookie用到请求里的完整例子,方便你参考:

(require '[clj-http.client :as client]
         '[clj-http.cookies :as cookies])

; 生成客户端cookie
(def session-cookie (cookies/to-basic-client-cookie "session_token" "my-secret-token-123"))

; 带着cookie发送GET请求
(client/get "https://your-target-url.com" {:cookies [session-cookie]})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:32:22