您可以创建自定义WebViewClient 并覆盖shouldInterceptRequest() 方法。如果您以 API 21 及更高版本为目标,则为
override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse?
在里面,你会打开一个 HTTPS 连接:
val requestUrl = request.url!!.toString()
val httpsUrl = URL(requestUrl)
val conn: HttpsURLConnection = httpsUrl.openConnection() as HttpsURLConnection
for ((key, value) in request.requestHeaders) {
conn.addRequestProperty(key, value)
}
现在您有机会添加新标题或修改现有标题,例如
conn.setRequestProperty("ORIGIN", "https://stackoverflow.com")
当您的请求全部设置好后,您可以将结果包装在一个新的 WebResourceResponse 中:
return WebResourceResponse(
conn.contentType.substringBefore(";"),
conn.contentType.substringAfter("charset=", "UTF-8"),
conn.inputStream)
典型的conn.contentType 是"text/html; charset=UTF-8"。您可以添加更具弹性的解析,或者如果您知道硬编码值,则只需使用它们。