2011-12-30 53 views
2

我剛看到這個庫https://github.com/technomancy/clojure-http-client在這個片段中的README網頁上的代碼是什麼,我希望做使用CLJ-HTTP客戶端自動登錄

(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的

客戶遵循這個重定向

任何幫助,將不勝感激。

回答

4

FYI我解決了這個,

(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....... 
0

我想你需要明確地使用庫中的follow-redirect函數。