我刚看到这个库https://github.com/technomancy/clojure-http-client在README页面上有这段代码,这就是我想要做的事情
(res/with-cookies {}
(res/post "http://localhost:3000/login" {} {"user" user "password" password})
(res/get "http://localhost:3000/my-secret-page))
然而,似乎不推荐使用lib,它建议您使用clj-http
库。我只是想知道是否有人知道如何使用该库复制这种行为?
目前我只是做
(post "<site i want to login to>" {:form-params {:username "<my username>" :password "<my password>"}})
返回一个将http 302重定向到经过身份验证的页面的cookie,但我不知道如何使用经过身份验证的cookie使客户端遵循此重定向
任何帮助将不胜感激。
答案 0 :(得分:4)
仅供参考我解决了这个问题,
(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.......
答案 1 :(得分:0)
我猜你需要明确使用库中的follow-redirect
函数。