在scala中执行Curl命令

时间:2017-08-21 20:19:55

标签: scala curl

我正在尝试通过scala为scalatest执行curl命令, CURL:

curl -H "Content-Type: application/json" --data @/home/examples/demo/demo.json http://localhost:9090/job

当我尝试使用scala时,它会起到预期作用,比如

import scala.sys.process._
    val json = getClass.getClassLoader.getResource(arg0).getPath

    val cmd = Seq("curl", "-H", "'Content-Type: application/json'","-d", s"@$json","http://localhost:9090/job")
    cmd.!

并产生以下错误

Expected 'application/json'

1 个答案:

答案 0 :(得分:3)

你引用太多:

Seq("curl", "-H", "'Content-Type: application/json'","-d", s"@$json","http://localhost:9090/job")
//                !^!                            !^!

应该是:

Seq("curl", "-H", "Content-Type: application/json", "-d", s"@$json","http://localhost:9090/job")
//                 !                            !

您需要在shell中引用内容类型的原因是因为 shell 会在未引用的情况下将其分解。 Curl不知道如何处理报价,因为报价不是它的业务。 Scala也不会进行任何分词,因为这是你的工作。