2

使用scalaj.http 2.4 我无法If-None-Match为这个简单的调用获得正确的 etag 代码:

import scalaj.http.Http
object EtagTest extends App {
  val firstResponse = Http("https://api.github.com/users/octocat/orgs")
  // get correct etag ...
  val response = Http("https://api.github.com/users/octocat/orgs").header("If-None-Match", "\"98f0c1b396a4e5d54f4d5fe561d54b44\"").asString
  println(response.code)
}

我期待一个304 Not Modified,但我得到一个200

4

1 回答 1

0

我尝试了以下方法,它对我有用。看起来ETag你用这个程序得到的不是ETag你在程序中硬编码的。奇怪的是,当我向它发送一个 cURL 请求时,ETag返回的是你硬编码的那个。

import scalaj.http.Http

object ETagTest extends App {
  val firstResponse = Http("https://api.github.com/users/octocat/orgs").asString
  val response = Http("https://api.github.com/users/octocat/orgs").header("If-None-Match", firstResponse.header(key = "ETag").get).asString
  println(response.code)
  println(response.header(key = "ETag").get)
}

上述输出:

304
"80b190627d4c87e9a37c34e20ea246a1"
于 2018-05-23T05:25:53.130 回答