Scala 工具包

如何发送带正文的请求?

语言

你可以在一行中要求整个工具包

//> using toolkit latest

或者,你只需要求 sttp 的特定版本

//> using dep com.softwaremill.sttp.client4::core:4.0.0-M1

在你的 build.sbt 文件中,你可以添加对工具包的依赖

lazy val example = project.in(file("example"))
  .settings(
    scalaVersion := "3.2.2",
    libraryDependencies += "org.scala-lang" %% "toolkit" % "0.1.7"
  )

或者,你只需要求 sttp 的特定版本

libraryDependencies += "com.softwaremill.sttp.client4" %% "core" % "4.0.0-M1"

在你的 build.sc 文件中,你可以添加对工具包的依赖

object example extends ScalaModule {
  def scalaVersion = "3.2.2"
  def ivyDeps =
    Agg(
      ivy"org.scala-lang::toolkit:0.1.7"
    )
}

或者,你只需要求 sttp 的特定版本

ivy"com.softwaremill.sttp.client4::core:4.0.0-M1"

发送带字符串正文的请求

要发送带字符串正文的 POST 请求,你可以将 postbody 链到 quickRequest

import sttp.client4.quick._

val response = quickRequest
  .post(uri"https://example.com/")
  .body("Lorem ipsum")
  .send()

println(response.code)
// prints: 200
import sttp.client4.quick.*

val response = quickRequest
  .post(uri"https://example.com/")
  .body("Lorem ipsum")
  .send()

println(response.code)
// prints: 200

在带字符串正文的请求中,sttp 会添加 Content-Type: text/plain; charset=utf-8 头并计算 Content-Length 头。

二进制数据

body 方法还可以采用 Array[Byte]ByteBufferInputStream

val bytes: Array[Byte] = "john".getBytes
val request = quickRequest.post(uri"https://example.com/").body(bytes)

请求的二进制正文使用 Content-Type: application/octet-stream 发送。

sttp 文档中关于请求正文的章节 中了解更多信息。

此页面的贡献者