我想发出一个请求并强制它使用 Protocol.HTTP_2。我试过下面的代码:
import okhttp3.{OkHttpClient, Protocol, Request}
import scala.collection.JavaConversions._
import scala.collection.mutable.ListBuffer
object Main2 extends App {
val url = "https://google.com/"
val client = new OkHttpClient.Builder().protocols(ListBuffer(Protocol.HTTP_2)).build()
val request = new Request.Builder().url(url).build()
val response = client.newCall(request).execute()
println(response.body().string())
}
Run Code Online (Sandbox Code Playgroud)
但是出现错误:线程“main”中的异常java.lang.IllegalArgumentException:协议不包含http/1.1:[h2]
如果 \xe2\x80\x99s 可用,OkHttp 将自动使用 HTTP/2,但你可以 \xe2\x80\x99t 禁用 HTTP/1.1。
\n小智 5
如果您没有使用 SSL/TLS,则可以Protocol.H2_PRIOR_KNOWLEDGE在Protocol.HTTP_2创建 OkHttpClient 时使用它。
这将发送一个明文 HTTP/2,它不会首先与服务协商使用哪个协议。
对我来说,当服务器复用 HTTP/1.1 和 HTTP/2 时,这会强制使用 HTTP/2。
来源:https ://square.github.io/okhttp/3.x/okhttp/okhttp3/Protocol.html#H2_PRIOR_KNOWLEDGE
| 归档时间: |
|
| 查看次数: |
3239 次 |
| 最近记录: |