Как вызвать Docker HTTP API-запрос от Scala? - PullRequest
0 голосов
/ 18 марта 2019

Как запустить ниже curl из кода Scala?

curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json

Представить Scala-код, который у меня есть:

object dockercall {
  @throws(classOf[java.io.IOException])
  @throws(classOf[java.net.SocketTimeoutException])
  def get(url: String,
      connectTimeout:Int =5000,
      readTimeout:Int =5000,
      requestMethod: String = "GET") = {
    import java.net.{URL, HttpURLConnection}
    val connection = (new URL(url)).openConnection.asInstanceOf[HttpURLConnection]
    connection.setConnectTimeout(connectTimeout)
    connection.setReadTimeout(readTimeout)
    connection.setRequestMethod(requestMethod)
    val inputStream = connection.getInputStream
    val content = io.Source.fromInputStream(inputStream).mkString
    if (inputStream != null) inputStream.close
    content
  }


  def main(args: Array[String]): Unit = {
    println(get("http:/v1.24/containers/json"))
  }

}

Ошибка ниже при вызове getInputStream:

Exception in thread "main" java.lang.IllegalArgumentException: protocol = http host = null
at sun.net.spi.DefaultProxySelector.select(DefaultProxySelector.java:177)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1150)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)

Сомнения:

1) Как вставить этот параметр сокета unix в код

2) Сделать вышеупомянутый вызов http работающим

Примечание:

Я не хочу использовать докер-клиент

...