レスポンスの読み込み

Estimated reading time: 1 minute

レスポンスボディの受信

デフォルトでは、Httpクライアントリクエストの可能な型としてHttpResponseまたはStringを使用できます。 例えば、次のとおりです。

val htmlContent = client.get<String>("https://en.wikipedia.org/wiki/Main_Page")
val response = client.get<HttpResponse>("https://en.wikipedia.org/wiki/Main_Page")

JsonFeature が設定されていて、サーバーがヘッダーContent-Type: application/jsonを返す場合、 デシリアライズするクラスを指定することもできます。

val helloWorld = client.get<HelloWorld>("http://127.0.0.1:8080/")

HttpResponseクラス

HttpResponseのAPIリファレンスはこちらに記載されています.

HttpResponseから、レスポンス内容を簡単に取得することができます。

  • val readChannel: ByteReadChannel = response.content
  • val bytes: ByteArray = response.readBytes()
  • val text: String = response.readText()
  • val readChannel = response.receive<ByteReadChannel>()
  • val multiPart = response.receive<MultiPartData>()
  • val inputStream = response.receive<InputStream>() InputStream APIは同期的なことに注意!
  • response.discardRemaining()

ステータス、ヘッダー、内部状態などの追加のレスポンス情報も取得できます。

Basic

  • val status: HttpStatusCode = response.status
  • val headers: Headers = response.headers

Advanced

  • val call: HttpClientCall = response.call
  • val version: HttpProtocolVersion = response.version
  • val requestTime: Date = response.requestTime
  • val responseTime: Date = response.responseTime
  • val executionContext: Job = response.executionContext

Extensions for headers

  • val contentType: ContentType? = response.contentType()
  • val charset: Charset? = response.charset()
  • val lastModified: Date? = response.lastModified()
  • val etag: String? = response.etag()
  • val expires: Date? = response.expires()
  • val vary: List<String>? = response.vary()
  • val contentLength: Int? = response.contentLength()
  • val setCookie: List<Cookie> = response.setCookie()