你可以在一行中要求整个工具包
//> 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"
上传文件
要上传文件,你可以将 Java Path
放入请求的正文中。
你可以直接使用 Paths.get("path/to/file")
获取 Path
,或使用 toNIO
将 OS-Lib 路径转换为 Java 路径。
import sttp.client4.quick._
val file: java.nio.file.Path = (os.pwd / "image.png").toNIO
val response = quickRequest.post(uri"https://example.com/").body(file).send()
println(response.code)
// prints: 200
import sttp.client4.quick.*
val file: java.nio.file.Path = (os.pwd / "image.png").toNIO
val response = quickRequest.post(uri"https://example.com/").body(file).send()
println(response.code)
// prints: 200
多部分请求
如果 Web 服务器可以一次接收多个文件,你可以使用多部分正文,如下所示
import sttp.client4.quick._
val file1 = (os.pwd / "avatar1.png").toNIO
val file2 = (os.pwd / "avatar2.png").toNIO
val response = quickRequest
.post(uri"https://example.com/")
.multipartBody(
multipartFile("avatar1.png", file1),
multipartFile("avatar2.png", file2)
)
.send()
import sttp.client4.quick.*
val file1 = (os.pwd / "avatar1.png").toNIO
val file2 = (os.pwd / "avatar2.png").toNIO
val response = quickRequest
.post(uri"https://example.com/")
.multipartBody(
multipartFile("avatar1.png", file1),
multipartFile("avatar2.png", file2)
)
.send()
在 sttp 文档 中了解有关多部分请求的更多信息。