我刚刚看到这个库 https://github.com/technomancy/clojure-http-client在自述文件页面上使用这段代码,这就是我想要做的
(res/with-cookies {}
(res/post "http://localhost:3000/login" {} {"user" user "password" password})
(res/get "http://localhost:3000/my-secret-page))
但是,该库似乎已被弃用,建议您改用 clj-http 库。我只是想知道是否有人知道如何使用该库复制这种行为?
目前我只是这样做
(post "<site i want to login to>" {:form-params {:username "<my username>" :password "<my password>"}})
它返回一个具有 http 302 重定向到经过身份验证的页面的 cookie,但我不知道如何使客户端使用经过身份验证的 cookie 遵循此重定向
如有任何帮助,我们将不胜感激。
最佳答案
仅供引用,我解决了这个问题,
(defn login [login-url user pass]
(let [result (client/post "http://my-site.com/login" {:form-params {:username user :password pass}})]
(when (= (:status result) 302)
(:cookies result))))
如果登录成功,它将返回一个 cookie 映射,然后可以在访问需要登录的页面时在后续请求中使用该映射,例如
(when-let [cookies (login "http://my-site.com" "my-user" "my-pass")]
(client/get "http://my-site.com/user-page" { :cookies cookies }))
=> <html><head><title>Hello my-user!</titl.......
关于clojure - 使用clj-http客户端自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684300/