0
votes

I'm trying to get the body of a HTTP response with Clojure, with a handler. However the http-agent function hangs without returning.

This will print the response, and then hang without returning:

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

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

This will print "Handling...", then hang indefinitely:

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

How can I get the http-agent method to stop hanging? In the second case I've listed above, how can I get the handler to return the response body?

Thanks for your help, Kevin

1

1 Answers

0
votes

In the second piece of code you have not printed out what is slurped. Should be like this -

(println (slurp (string response)))