Получить тело HTTP-ответа в Clojure

#clojure

#clojure

Вопрос:

Я пытаюсь получить тело HTTP-ответа с помощью Clojure, с помощью обработчика. Однако http-agent функция зависает без возврата.

Это выведет ответ, а затем зависнет без возврата:

 (use '[clojure.contrib.http.agent])

(def text (result (http-agent "http://jsonip.com"
                   :method "GET")))
(println text)
  

Это напечатает "Handling..." , а затем зависнет на неопределенный срок:

 (use '[clojure.contrib.http.agent])

(defn do-stuff
  "handler"
  [response]
  (do 
    (println "Handling...")
    (slurp (string response))))

(def text (result (http-agent "http://jsonip.com"
  :method "GET"
  :handler do-stuff)))

(println (str "text! " text))
  

Как я могу заставить метод http-agent перестать зависать? Во втором случае, который я перечислил выше, как я могу заставить обработчик вернуть тело ответа?

Спасибо за вашу помощь, Кевин

Ответ №1:

Во втором фрагменте кода вы не распечатали то, что было выбрано. Должно быть так —

 (println (slurp (string response)))