Scala 工具組

如何傳送包含主體的請求?

語言

您可以在單一行中要求整個工具組

//> using toolkit latest

或者,您也可以只要求特定版本的 sttp

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

在你的 build.sbt 檔案中,你可以加入對 Toolkit 的依賴

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 檔案中,你可以加入對 Toolkit 的依賴

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 文件的請求主體章節 中了解更多資訊。

此頁面的貢獻者