小编Val*_*Dia的帖子

Scala HTTP4s打印整个HTTP错误响应

我编写此代码以使用http4s客户端库对REST Web服务进行POST调用

val client = SimpleHttp1Client()
val form = UrlForm("username" -> userName, "password" -> password)
val uri = Uri.fromString(url).valueOr(throw _)
val list = List(`Content-Type`(MediaType.`application/json`), Accept(MediaType.`application/json`))
val req = POST(uri, form).map(_.putHeaders(list :_*))
try {
   val result = client.expect[String](req).unsafePerformSync
   Some(result)
} catch {
   case e : Throwable => println(e.getMessage); None
}
Run Code Online (Sandbox Code Playgroud)

现在,代码获得了400 Bad Request错误,我不知道为什么.我无法在上面的代码中打印整个错误的主体.

当我通过POSTMAN进行相同的REST调用时,我可以看到400 Bad request error body

{
  "errors": [
    "password: field is required",
    "username: field is required"
  ]
}
Run Code Online (Sandbox Code Playgroud)

如何在代码中打印整个错误主体?

此外,在postman中,当我设置Content-Type和Accept标头时,后调用成功.在上面的代码中,我设置相同的2个标头和相同的json主体但仍然此代码获得400错误.

val list = List[Header](Header("Accept", "application/json"), Header("Content-Type", "application/json"))
val …
Run Code Online (Sandbox Code Playgroud)

json scala http4s

1
推荐指数
1
解决办法
672
查看次数

Scala用于Map的理解性抛出错误

我有以下代码片段,常规for循环工作正常。但是对于理解会抛出错误

println("Using for loop")
for( (key, value) <- orec.groupBy(x => x.continent) )
  {
  println(key + value.length )
}

println("Using for comprehension")
for{
  (key, value) <- orec.groupBy(x => x.continent)
  println(key + value.length )
} yield (key,value)
Run Code Online (Sandbox Code Playgroud)

错误消息是

Error:(84, 5) '<-' expected but '}' found.
    } yield (key,value)
Run Code Online (Sandbox Code Playgroud)

我不明白代码有什么问题。请协助解决问题

scala for-comprehension

1
推荐指数
1
解决办法
58
查看次数

为什么Scala正则表达式在模式匹配中的工作方式有所不同

我有一个简单的正则表达式val emailRegex = "\\w+@\\w+\\.\\w+".r,可以匹配简单的电子邮件(当然,不是用于生产)。当我运行以下代码时:

println(email match {
  case emailRegex(_) => "cool"
  case _ => "not cool"
})

printlnemailRegex.pattern.matcher(email).matches())
Run Code Online (Sandbox Code Playgroud)

它打印not cooltrue。添加锚点也无济于事:"^\\w+@\\w+\\.\\w+$".r给出相同的结果。但是当我加上括号时,"(\\w+@\\w+\\.\\w+)".r它会打印cooltrue

为什么会这样?

regex scala pattern-matching

1
推荐指数
2
解决办法
57
查看次数

我们可以声明变量并在 scala 的 for 循环中使用它们吗

我尝试使用 scala 中已声明的变量迭代 for 循环,但收到错误“不是有效的块语句”

我已经删除了变量声明行并且它工作正常。

 object FirstObject 
 {

    def main(args:Array[String])
    {

      var i:Int,j:Int; // variable declaration
      for(i <- 1 to 10; j <- 1 to 5)
      {
        println(s"($i, $j)")
      }
    }
 }
Run Code Online (Sandbox Code Playgroud)

预期结果看起来像这样

(1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (3, 1)......

scala for-comprehension

0
推荐指数
1
解决办法
986
查看次数

特征定义名称后面的大括号在 scala 中意味着什么?

在使用时Future我看到人们使用

Future{
      Thread sleep 500
      promise success "You've just completed the promise with me in it!"
 }
Run Code Online (Sandbox Code Playgroud)

看看 的定义Future,我可以看出 Future 是一个特质

但是当我制作自己的特质时,示例:

trait t{}
def main(args: Array[String]): Unit = {
    t{
        println("Test")
    }
}
Run Code Online (Sandbox Code Playgroud)

它无法编译。为什么?

scala

0
推荐指数
1
解决办法
70
查看次数

scala 中关于 for 表达式的简单模式的非法开始

object main {
  def main(args: Array[String]): Unit = {
    for (
      i <- 1 to 10
      if i % 2 == 0;
      j <- 2 to 8
      if j % 2 == 1;
      ) {
      println(s"i: ${i}, j: ${j}")
      val t = i + j
      println(s"t: ${t}")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨:illegal start of simple pattern.

如果我删除第二个分号:

object main {
  def main(args: Array[String]): Unit = {
    for (
      i <- 1 to 10
      if i % 2 == 0;
      j …
Run Code Online (Sandbox Code Playgroud)

scala for-comprehension

0
推荐指数
1
解决办法
1554
查看次数