你可以在一行中要求整个工具包
//> 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"
发送 HTTP 请求
使用 sttp 发送请求的最简单方法是 quickRequest
。
你可以使用 .get
定义一个 GET 请求,并使用 .send
发送它。
import sttp.client4.quick._
import sttp.client4.Response
val response: Response[String] = quickRequest
.get(uri"https://httpbin.org/get")
.send()
println(response.code)
// prints: 200
println(response.body)
// prints some JSON string
import sttp.client4.quick.*
import sttp.client4.Response
val response: Response[String] = quickRequest
.get(uri"https://httpbin.org/get")
.send()
println(response.code)
// prints: 200
println(response.body)
// prints some JSON string
一个 Response[String]
包含一个状态代码和一个字符串主体。
请求定义
HTTP 方法和 URI
要指定 quickRequest
的 HTTP 方法和 URI,可以使用 get
、post
、put
或 delete
。
要构建一个 URI,可以使用 uri
插值器,例如 uri"https://example.com"
。要了解更多信息,请参阅 如何构建 URI 和查询参数?。
标题
默认情况下,quickRequest
包含“Accept-Encoding”和“deflate”标题。要添加更多标题,可以调用 header
或 headers
重载之一
import sttp.client4.quick._
val request = quickRequest
.get(uri"https://example.com")
.header("Origin", "https://scala-lang.org.cn")
println(request.headers)
// prints: Vector(Accept-Encoding: gzip, deflate, Origin: https://scala-lang.org.cn)
import sttp.client4.quick.*
val request = quickRequest
.get(uri"https://example.com")
.header("Origin", "https://scala-lang.org.cn")
println(request.headers)
// prints: Vector(Accept-Encoding: gzip, deflate, Origin: https://scala-lang.org.cn)
如果请求包含主体,sttp 还可以自动添加“Content-Type”和“Content-Length”。
身份验证
如果您需要身份验证才能访问资源,可以使用 auth.basic
、auth.basicToken
、auth.bearer
或 auth.digest
方法之一。
import sttp.client4.quick._
// a request with a authentication
val request = quickRequest
.get(uri"https://example.com")
.auth.basic(user = "user", password = "***")
import sttp.client4.quick.*
// a request with a authentication
val request = quickRequest
.get(uri"https://example.com")
.auth.basic(user = "user", password = "***")