在Clojure中执行get curl请求

克拉达拉瓦勒

我是Clojure的新手,并且想知道我是否正确设置了curl调用。在文件的名称空间中,我定义了用于将clojure.java.shell运行为变量sh的用法,然后使用命令curl和完整的URL调用sh至以执行GET curl请求。

 ns my-exercise.search
   (:require [hiccup.page :refer [html5]])
   (:use [clojure.java.shell :only [sh]]))

(def response (sh "curl" completeURL))
(println response)

在终端中打印响应时,我会得到一个表,该表看起来包含响应性能的数据。但是,输出是空的parens。

我在终端中收到响应后,是否可以正确调用curl命令?

{:exit 0, :out (), :err   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     2  100     2    0     0      7      0 --:--:-- --:--:-- --:--:--     7
}

如果是这样,那么我还有另一个问题。我收到一个空的paren作为输出响应。即使当我使用邮递员拨打电话时,我也会收到状态200,数据为空。这是否表示api没有向我发送信息?

我的最后一个问题,可以说我确实可以使它正常工作并获得带有输出的响应。如何获得该输出并将其分配给变量?

谢谢!

艾伦·汤普森

这是我的方法:

(defn run-shell-cmd
  "Run a command represented as a string in an OS shell (default=/bin/bash).
  Example: 'ls -ldF *'  "
  [cmd-str]
  (let [result (shell/sh *os-shell* "-c" cmd-str)]
    (if (= 0 (t/safe-> :exit result))
      result
      (throw (RuntimeException.
               (str "shell-cmd: clojure.java.shell/sh failed. \n"
                    "cmd-str:"     cmd-str        "\n"
                    "exit status:" (:exit result) "\n"
                    "stderr:"      (:err  result) "\n"
                    "result:"      (:out  result) "\n"
              ))))))

  (let [result  (run-shell-cmd "ls -al")]
    (newline)
    (println :ls-cmd)
    (println result))

结果:

:ls-cmd
{:exit 0, :out total 176
drwxrwxr-x   8 alan alan  4096 Mar 14 13:46 .
drwxr-xr-x 155 alan alan  4096 Mar 28 17:27 ..
drwxrwxr-x   8 alan alan  4096 Mar 28 17:29 .git

尝试curl

  (let [result  (run-shell-cmd "curl http://www.google.com")]
    (newline)
    (println :curl-cmd)
    (println result))
  )

结果:

:curl-cmd
{:exit 0, :out <!doctype html><html itemscope="" 
itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for." 
name="description"><meta content="noodp" name="robots">
....<snip>

如果您不想自己动手,可以在此处找到上述便利功能

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章